@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
@@ -10,19 +10,83 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  var ConnectorProcessSpawnerService_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ConnectorProcessSpawnerService = void 0;
13
+ exports.ConnectorProcessSpawnerService = exports.INHERITED_CONNECTOR_ENV_VARS = exports.TRUNCATED_OUTPUT_LINE = exports.MAX_CAPTURED_LINE_LENGTH = void 0;
14
+ exports.inheritConnectorEnv = inheritConnectorEnv;
15
+ exports.createCapturedLineBuffer = createCapturedLineBuffer;
14
16
  const common_1 = require("@nestjs/common");
15
17
  const cross_spawn_1 = require("cross-spawn");
16
18
  const graceful_shutdown_service_1 = require("../../../common/scheduler/services/graceful-shutdown.service");
17
- const MAX_CAPTURED_LINE_LENGTH = 1024 * 1024;
18
- const TRUNCATED_OUTPUT_LINE = '[TRUNCATED connector output line: exceeded 1048576 bytes]';
19
+ exports.MAX_CAPTURED_LINE_LENGTH = 1024 * 1024;
20
+ exports.TRUNCATED_OUTPUT_LINE = '[TRUNCATED connector output line: exceeded 1048576 bytes]';
21
+ exports.INHERITED_CONNECTOR_ENV_VARS = [
22
+ 'PATH',
23
+ 'NODE_OPTIONS',
24
+ 'NODE_EXTRA_CA_CERTS',
25
+ 'SSL_CERT_FILE',
26
+ 'SSL_CERT_DIR',
27
+ 'HOME',
28
+ 'USERPROFILE',
29
+ 'TMPDIR',
30
+ 'TMP',
31
+ 'TEMP',
32
+ 'SystemRoot',
33
+ ];
34
+ const MANIFEST_RUN_INHERITED_ENV_VARS = [...exports.INHERITED_CONNECTOR_ENV_VARS, 'NODE_ENV'];
35
+ function inheritConnectorEnv(names = exports.INHERITED_CONNECTOR_ENV_VARS) {
36
+ return Object.fromEntries(names.map(name => [name, process.env[name]]));
37
+ }
38
+ function createCapturedLineBuffer(onLine) {
39
+ let buffer = '';
40
+ let discardingOversizedLine = false;
41
+ const emit = (line) => {
42
+ onLine(line.endsWith('\r') ? line.slice(0, -1) : line);
43
+ };
44
+ return {
45
+ push: (chunk) => {
46
+ const parts = chunk.split('\n');
47
+ parts.forEach((part, index) => {
48
+ const isLastPart = index === parts.length - 1;
49
+ if (discardingOversizedLine) {
50
+ if (!isLastPart) {
51
+ discardingOversizedLine = false;
52
+ buffer = '';
53
+ }
54
+ return;
55
+ }
56
+ if (buffer.length + part.length > exports.MAX_CAPTURED_LINE_LENGTH) {
57
+ emit(exports.TRUNCATED_OUTPUT_LINE);
58
+ buffer = '';
59
+ discardingOversizedLine = isLastPart;
60
+ return;
61
+ }
62
+ buffer += part;
63
+ if (!isLastPart) {
64
+ emit(buffer);
65
+ buffer = '';
66
+ }
67
+ });
68
+ },
69
+ flush: () => {
70
+ if (discardingOversizedLine) {
71
+ discardingOversizedLine = false;
72
+ buffer = '';
73
+ return;
74
+ }
75
+ if (!buffer) {
76
+ return;
77
+ }
78
+ emit(buffer);
79
+ buffer = '';
80
+ },
81
+ };
82
+ }
19
83
  let ConnectorProcessSpawnerService = ConnectorProcessSpawnerService_1 = class ConnectorProcessSpawnerService {
20
84
  gracefulShutdownService;
21
85
  logger = new common_1.Logger(ConnectorProcessSpawnerService_1.name);
22
86
  constructor(gracefulShutdownService) {
23
87
  this.gracefulShutdownService = gracefulShutdownService;
24
88
  }
25
- spawnConnector(datamartId, runId, configuration, runConfig, stdio, signal) {
89
+ spawnConnector(datamartId, runId, configuration, runConfig, stdio, signal, manifest) {
26
90
  return new Promise((resolve, reject) => {
27
91
  const spawnStdio = 'pipe';
28
92
  let logCapture = null;
@@ -34,13 +98,7 @@ let ConnectorProcessSpawnerService = ConnectorProcessSpawnerService_1 = class Co
34
98
  if (stdio && typeof stdio === 'object' && typeof stdio.onSpawn === 'function') {
35
99
  onSpawn = stdio.onSpawn;
36
100
  }
37
- const env = {
38
- ...process.env,
39
- OW_DATAMART_ID: datamartId,
40
- OW_RUN_ID: runId,
41
- OW_CONFIG: JSON.stringify(configuration.toObject()),
42
- OW_RUN_CONFIG: JSON.stringify(runConfig.toObject()),
43
- };
101
+ const env = this.buildChildEnv(datamartId, runId, configuration, runConfig, manifest);
44
102
  this.logger.log(`Spawning new process for connector runner execution for datamart ${datamartId} and run ${runId}`, { datamartId, runId });
45
103
  const runnerPath = require.resolve('@owox/connectors/runner');
46
104
  const node = (0, cross_spawn_1.spawn)('node', ['--no-deprecation', runnerPath], {
@@ -57,13 +115,15 @@ let ConnectorProcessSpawnerService = ConnectorProcessSpawnerService_1 = class Co
57
115
  }
58
116
  }
59
117
  if (node.stdout && node.stderr) {
60
- const stdoutBuffer = this.createLineBuffer(message => logCapture?.onStdout?.(message));
61
- const stderrBuffer = this.createLineBuffer(message => logCapture?.onStderr?.(message));
62
- node.stdout.on('data', data => {
63
- stdoutBuffer.push(data.toString());
118
+ const stdoutBuffer = createCapturedLineBuffer(message => logCapture?.onStdout?.(message));
119
+ const stderrBuffer = createCapturedLineBuffer(message => logCapture?.onStderr?.(message));
120
+ node.stdout.setEncoding('utf8');
121
+ node.stderr.setEncoding('utf8');
122
+ node.stdout.on('data', (data) => {
123
+ stdoutBuffer.push(data);
64
124
  });
65
- node.stderr.on('data', data => {
66
- stderrBuffer.push(data.toString());
125
+ node.stderr.on('data', (data) => {
126
+ stderrBuffer.push(data);
67
127
  });
68
128
  node.stdout.on('end', () => {
69
129
  stdoutBuffer.flush();
@@ -122,50 +182,18 @@ let ConnectorProcessSpawnerService = ConnectorProcessSpawnerService_1 = class Co
122
182
  });
123
183
  });
124
184
  }
125
- createLineBuffer(onLine) {
126
- let buffer = '';
127
- let discardingOversizedLine = false;
128
- const emit = (line) => {
129
- onLine(line.endsWith('\r') ? line.slice(0, -1) : line);
130
- };
131
- return {
132
- push: (chunk) => {
133
- const parts = chunk.split('\n');
134
- parts.forEach((part, index) => {
135
- const isLastPart = index === parts.length - 1;
136
- if (discardingOversizedLine) {
137
- if (!isLastPart) {
138
- discardingOversizedLine = false;
139
- buffer = '';
140
- }
141
- return;
142
- }
143
- if (buffer.length + part.length > MAX_CAPTURED_LINE_LENGTH) {
144
- emit(TRUNCATED_OUTPUT_LINE);
145
- buffer = '';
146
- discardingOversizedLine = isLastPart;
147
- return;
148
- }
149
- buffer += part;
150
- if (!isLastPart) {
151
- emit(buffer);
152
- buffer = '';
153
- }
154
- });
155
- },
156
- flush: () => {
157
- if (discardingOversizedLine) {
158
- discardingOversizedLine = false;
159
- buffer = '';
160
- return;
161
- }
162
- if (!buffer) {
163
- return;
164
- }
165
- emit(buffer);
166
- buffer = '';
167
- },
185
+ buildChildEnv(datamartId, runId, configuration, runConfig, manifest) {
186
+ const env = {
187
+ ...(manifest ? inheritConnectorEnv(MANIFEST_RUN_INHERITED_ENV_VARS) : { ...process.env }),
188
+ OW_DATAMART_ID: datamartId,
189
+ OW_RUN_ID: runId,
190
+ OW_CONFIG: JSON.stringify(configuration.toObject()),
191
+ OW_RUN_CONFIG: JSON.stringify(runConfig.toObject()),
168
192
  };
193
+ if (manifest) {
194
+ env.OW_MANIFEST = JSON.stringify(manifest);
195
+ }
196
+ return env;
169
197
  }
170
198
  };
171
199
  exports.ConnectorProcessSpawnerService = ConnectorProcessSpawnerService;
@@ -2,6 +2,7 @@ import { ConnectorDefinition } from '../../dto/schemas/data-mart-table-definitio
2
2
  import { ConnectorService } from './connector.service';
3
3
  import { ConnectorSourceCredentialsService } from './connector-source-credentials.service';
4
4
  export declare const SECRET_MASK: "**********";
5
+ export type SecretFieldsCache = Map<string, Promise<Set<string>>>;
5
6
  export declare class ConnectorSecretService {
6
7
  private readonly connectorService;
7
8
  private readonly connectorSourceCredentialsService;
@@ -20,12 +21,14 @@ export declare class ConnectorSecretService {
20
21
  extractAndSaveSecrets(dataMartId: string, projectId: string, connectorName: string, definition: ConnectorDefinition, userId?: string): Promise<ConnectorDefinition>;
21
22
  private maskRecursively;
22
23
  private mergeSecretsRecursively;
23
- mask(definition: ConnectorDefinition | undefined): Promise<ConnectorDefinition | undefined>;
24
+ private maskWithoutSpecification;
25
+ private maskEveryValueRecursively;
26
+ mask(projectId: string | undefined, definition: ConnectorDefinition | undefined, secretFieldsCache?: SecretFieldsCache): Promise<ConnectorDefinition | undefined>;
24
27
  private injectMasksAtPaths;
25
- mergeDefinitionSecrets(incoming: ConnectorDefinition, previous: ConnectorDefinition | undefined): Promise<ConnectorDefinition>;
28
+ mergeDefinitionSecrets(projectId: string, incoming: ConnectorDefinition, previous: ConnectorDefinition | undefined): Promise<ConnectorDefinition>;
26
29
  deleteOrphanedSecrets(dataMartId: string, currentDefinition: ConnectorDefinition, previousDefinition: ConnectorDefinition | undefined): Promise<void>;
27
30
  private collectSecretsIds;
28
- mergeDefinitionSecretsFromSource(incoming: ConnectorDefinition, sourceDefinition: ConnectorDefinition): Promise<ConnectorDefinition>;
31
+ mergeDefinitionSecretsFromSource(projectId: string, incoming: ConnectorDefinition, sourceDefinition: ConnectorDefinition): Promise<ConnectorDefinition>;
29
32
  private hasSameRefreshToken;
30
33
  private getRefreshTokenValue;
31
34
  }
@@ -16,6 +16,7 @@ const crypto_1 = require("crypto");
16
16
  const connector_service_1 = require("./connector.service");
17
17
  const connector_source_credentials_service_1 = require("./connector-source-credentials.service");
18
18
  const connectors_1 = require("@owox/connectors");
19
+ const internal_helpers_1 = require("@owox/internal-helpers");
19
20
  exports.SECRET_MASK = '**********';
20
21
  const { GENERATED_REFRESH_TOKEN_CREDENTIAL_FIELD } = connectors_1.Core;
21
22
  let ConnectorSecretService = ConnectorSecretService_1 = class ConnectorSecretService {
@@ -29,8 +30,10 @@ let ConnectorSecretService = ConnectorSecretService_1 = class ConnectorSecretSer
29
30
  isSecretMask(value) {
30
31
  return typeof value === 'string' && value === exports.SECRET_MASK;
31
32
  }
32
- async getAllSecretFieldNames(connectorName) {
33
- const specification = await this.connectorService.getConnectorSpecification(connectorName);
33
+ async getAllSecretFieldNames(projectId, connectorName, version) {
34
+ const specification = projectId
35
+ ? await this.connectorService.resolveConnectorSpecification(projectId, connectorName, version)
36
+ : await this.connectorService.getConnectorSpecification(connectorName);
34
37
  const secretFields = new Set();
35
38
  const collectSecretFields = (fields) => {
36
39
  for (const field of fields) {
@@ -184,10 +187,22 @@ let ConnectorSecretService = ConnectorSecretService_1 = class ConnectorSecretSer
184
187
  }
185
188
  }
186
189
  async extractAndSaveSecrets(dataMartId, projectId, connectorName, definition, userId) {
187
- const secretFieldNames = await this.getAllSecretFieldNames(connectorName);
190
+ const secretFieldNames = await this.getAllSecretFieldNames(projectId, connectorName, definition.connector.source.version);
188
191
  const hasGeneratedRefreshToken = this.hasGeneratedRefreshTokenRecursively(definition.connector.source.configuration);
189
192
  if (secretFieldNames.size === 0 && !hasGeneratedRefreshToken) {
190
- return definition;
193
+ return {
194
+ ...definition,
195
+ connector: {
196
+ ...definition.connector,
197
+ source: {
198
+ ...definition.connector.source,
199
+ configuration: definition.connector.source.configuration.map(item => {
200
+ const { _secrets_id: _dropped, ...rest } = item;
201
+ return rest;
202
+ }),
203
+ },
204
+ },
205
+ };
191
206
  }
192
207
  const processedConfiguration = await Promise.all(definition.connector.source.configuration.map(async (item) => {
193
208
  const configItem = JSON.parse(JSON.stringify(item));
@@ -312,10 +327,55 @@ let ConnectorSecretService = ConnectorSecretService_1 = class ConnectorSecretSer
312
327
  }
313
328
  return incomingItem;
314
329
  }
315
- async mask(definition) {
330
+ maskWithoutSpecification(definition) {
331
+ return {
332
+ ...definition,
333
+ connector: {
334
+ ...definition.connector,
335
+ source: {
336
+ ...definition.connector.source,
337
+ configuration: this.maskEveryValueRecursively(definition.connector.source.configuration),
338
+ },
339
+ },
340
+ };
341
+ }
342
+ maskEveryValueRecursively(value) {
343
+ if (Array.isArray(value)) {
344
+ return value.map(element => this.maskEveryValueRecursively(element));
345
+ }
346
+ if (value && typeof value === 'object') {
347
+ const masked = {};
348
+ for (const [key, nested] of Object.entries(value)) {
349
+ if (key === GENERATED_REFRESH_TOKEN_CREDENTIAL_FIELD) {
350
+ continue;
351
+ }
352
+ masked[key] = key.startsWith('_') ? nested : this.maskEveryValueRecursively(nested);
353
+ }
354
+ return masked;
355
+ }
356
+ if (value === undefined || value === null || value === '') {
357
+ return value;
358
+ }
359
+ return exports.SECRET_MASK;
360
+ }
361
+ async mask(projectId, definition, secretFieldsCache) {
316
362
  if (!definition)
317
363
  return definition;
318
- const secretFieldNames = await this.getAllSecretFieldNames(definition.connector.source.name);
364
+ let secretFieldNames;
365
+ try {
366
+ const { name, version } = definition.connector.source;
367
+ const key = `${name}@${version ?? 'active'}`;
368
+ let secretFields = secretFieldsCache?.get(key);
369
+ if (!secretFields) {
370
+ secretFields = this.getAllSecretFieldNames(projectId, name, version);
371
+ secretFieldsCache?.set(key, secretFields);
372
+ }
373
+ secretFieldNames = await secretFields;
374
+ }
375
+ catch (error) {
376
+ this.logger.warn(`Failed to resolve specification for connector "${definition.connector.source.name}" while masking; masking every configuration value`, (0, internal_helpers_1.castError)(error).stack);
377
+ return this.maskWithoutSpecification(definition);
378
+ }
319
379
  const hasGeneratedRefreshToken = this.hasGeneratedRefreshTokenRecursively(definition.connector.source.configuration);
320
380
  if (secretFieldNames.size === 0 && !hasGeneratedRefreshToken) {
321
381
  return definition;
@@ -366,13 +426,18 @@ let ConnectorSecretService = ConnectorSecretService_1 = class ConnectorSecretSer
366
426
  current[lastPart] = exports.SECRET_MASK;
367
427
  }
368
428
  }
369
- async mergeDefinitionSecrets(incoming, previous) {
370
- const secretFieldNames = await this.getAllSecretFieldNames(incoming.connector.source.name);
371
- const previousConfiguration = previous?.connector?.source?.configuration || [];
429
+ async mergeDefinitionSecrets(projectId, incoming, previous) {
430
+ const secretFieldNames = await this.getAllSecretFieldNames(projectId, incoming.connector.source.name, incoming.connector.source.version);
431
+ const previousName = previous?.connector?.source?.name;
432
+ const switchedConnector = typeof previousName === 'string' &&
433
+ previousName.toLowerCase() !== incoming.connector.source.name.toLowerCase();
434
+ const previousConfiguration = switchedConnector
435
+ ? []
436
+ : previous?.connector?.source?.configuration || [];
372
437
  const mergedConfiguration = await Promise.all(incoming.connector.source.configuration.map(async (item) => {
373
438
  const incomingItem = (item || {});
374
439
  const usesSourceCredentials = this.hasSourceCredentialIdRecursively(incomingItem);
375
- if (usesSourceCredentials) {
440
+ if (usesSourceCredentials || switchedConnector) {
376
441
  delete incomingItem._secrets_id;
377
442
  }
378
443
  const itemId = incomingItem._id;
@@ -446,13 +511,13 @@ let ConnectorSecretService = ConnectorSecretService_1 = class ConnectorSecretSer
446
511
  }
447
512
  return secretsIds;
448
513
  }
449
- async mergeDefinitionSecretsFromSource(incoming, sourceDefinition) {
514
+ async mergeDefinitionSecretsFromSource(projectId, incoming, sourceDefinition) {
450
515
  if (incoming.connector.source.name !== sourceDefinition.connector.source.name) {
451
516
  throw new Error(`Cannot copy secrets from different connector type. ` +
452
517
  `Source: ${sourceDefinition.connector.source.name}, ` +
453
518
  `Target: ${incoming.connector.source.name}`);
454
519
  }
455
- const secretFieldNames = await this.getAllSecretFieldNames(incoming.connector.source.name);
520
+ const secretFieldNames = await this.getAllSecretFieldNames(projectId, incoming.connector.source.name, incoming.connector.source.version);
456
521
  const sourceSecretsIds = sourceDefinition.connector.source.configuration
457
522
  .map(item => item._secrets_id)
458
523
  .filter((id) => !!id);
@@ -26,7 +26,7 @@ let ConnectorSourceConfigService = ConnectorSourceConfigService_1 = class Connec
26
26
  const fieldsConfig = connector.source.fields
27
27
  .map(field => `${connector.source.node} ${field}`)
28
28
  .join(', ');
29
- const configWithSecrets = await this.credentialInjector.injectSecrets(config, projectId);
29
+ const configWithSecrets = await this.credentialInjector.injectSecrets(config, projectId, connector.source.name);
30
30
  const configWithCredentials = await this.credentialInjector.injectOAuthCredentials(configWithSecrets, connector.source.name, projectId);
31
31
  return new SourceConfigDto({
32
32
  name: connector.source.name,
@@ -1,7 +1,12 @@
1
1
  import { Repository } from 'typeorm';
2
2
  import { ConnectorSourceCredentials } from '../../entities/connector-source-credentials.entity';
3
+ export interface CredentialFieldUpdateResult {
4
+ credentials: ConnectorSourceCredentials;
5
+ updated: boolean;
6
+ }
3
7
  export declare class ConnectorSourceCredentialsService {
4
8
  private readonly connectorSourceCredentialsRepository;
9
+ private readonly logger;
5
10
  constructor(connectorSourceCredentialsRepository: Repository<ConnectorSourceCredentials>);
6
11
  createCredentials(projectId: string, userId: string, connectorName: string, credentials: Record<string, unknown>, expiresAt: Date | null, user?: {
7
12
  id?: string;
@@ -10,7 +15,6 @@ export declare class ConnectorSourceCredentialsService {
10
15
  picture?: string;
11
16
  }): Promise<ConnectorSourceCredentials>;
12
17
  getCredentialsById(id: string): Promise<ConnectorSourceCredentials | null>;
13
- getCredentialsByConnectorName(connectorName: string): Promise<ConnectorSourceCredentials[]>;
14
18
  updateCredentials(id: string, credentials: Record<string, unknown>, expiresAt?: Date | null): Promise<ConnectorSourceCredentials>;
15
19
  deleteCredentialsByIdsAndDataMart(ids: string[], dataMartId: string): Promise<number>;
16
20
  deleteCredentialsByConnectorName(connectorName: string): Promise<void>;
@@ -19,7 +23,7 @@ export declare class ConnectorSourceCredentialsService {
19
23
  createSecretsForConfig(projectId: string, connectorName: string, dataMartId: string, configId: string, secrets: Record<string, unknown>, userId?: string): Promise<ConnectorSourceCredentials>;
20
24
  getSecretsByDataMartAndConfig(dataMartId: string, configId: string): Promise<ConnectorSourceCredentials | null>;
21
25
  updateSecretsForConfig(id: string, projectId: string, secrets: Record<string, unknown>): Promise<ConnectorSourceCredentials>;
22
- updateCredentialFields(id: string, projectId: string, updates: Record<string, unknown>, expectedCurrentValues?: Record<string, unknown>): Promise<ConnectorSourceCredentials>;
26
+ updateCredentialFields(id: string, projectId: string, updates: Record<string, unknown>, expectedCurrentValues?: Record<string, unknown>): Promise<CredentialFieldUpdateResult>;
23
27
  private getJsonExtractTextExpression;
24
28
  private getDatabaseType;
25
29
  private updateCredentialsJson;
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
+ var ConnectorSourceCredentialsService_1;
14
15
  Object.defineProperty(exports, "__esModule", { value: true });
15
16
  exports.ConnectorSourceCredentialsService = void 0;
16
17
  const common_1 = require("@nestjs/common");
@@ -20,8 +21,9 @@ const connector_source_credentials_entity_1 = require("../../entities/connector-
20
21
  const connectors_1 = require("@owox/connectors");
21
22
  const { GENERATED_REFRESH_TOKEN_CREDENTIAL_FIELD } = connectors_1.Core;
22
23
  const SECRET_MASK = '**********';
23
- let ConnectorSourceCredentialsService = class ConnectorSourceCredentialsService {
24
+ let ConnectorSourceCredentialsService = ConnectorSourceCredentialsService_1 = class ConnectorSourceCredentialsService {
24
25
  connectorSourceCredentialsRepository;
26
+ logger = new common_1.Logger(ConnectorSourceCredentialsService_1.name);
25
27
  constructor(connectorSourceCredentialsRepository) {
26
28
  this.connectorSourceCredentialsRepository = connectorSourceCredentialsRepository;
27
29
  }
@@ -41,12 +43,6 @@ let ConnectorSourceCredentialsService = class ConnectorSourceCredentialsService
41
43
  where: { id },
42
44
  });
43
45
  }
44
- async getCredentialsByConnectorName(connectorName) {
45
- return await this.connectorSourceCredentialsRepository.find({
46
- where: { connectorName },
47
- order: { createdAt: 'DESC' },
48
- });
49
- }
50
46
  async updateCredentials(id, credentials, expiresAt) {
51
47
  const existingCredentials = await this.getCredentialsById(id);
52
48
  if (!existingCredentials) {
@@ -160,16 +156,22 @@ let ConnectorSourceCredentialsService = class ConnectorSourceCredentialsService
160
156
  }
161
157
  const updateResult = await queryBuilder.execute();
162
158
  if (updateResult.affected === 0) {
163
- return existing;
159
+ this.logger.warn(`Rotated credential was not persisted: the stored value changed while this run was ` +
160
+ `executing, so the newly issued token was discarded. Authentication may fail on the ` +
161
+ `next run until the source is reconnected.`, { credentialId: id, projectId });
162
+ return { credentials: existing, updated: false };
164
163
  }
165
- const updated = await this.getCredentialsById(id);
166
- return (updated ?? {
167
- ...existing,
168
- credentials: {
169
- ...existing.credentials,
170
- [GENERATED_REFRESH_TOKEN_CREDENTIAL_FIELD]: generatedRefreshToken,
164
+ const stored = await this.getCredentialsById(id);
165
+ return {
166
+ credentials: stored ?? {
167
+ ...existing,
168
+ credentials: {
169
+ ...existing.credentials,
170
+ [GENERATED_REFRESH_TOKEN_CREDENTIAL_FIELD]: generatedRefreshToken,
171
+ },
171
172
  },
172
- });
173
+ updated: true,
174
+ };
173
175
  }
174
176
  getJsonExtractTextExpression(column, path) {
175
177
  const databaseType = this.getDatabaseType();
@@ -261,7 +263,7 @@ let ConnectorSourceCredentialsService = class ConnectorSourceCredentialsService
261
263
  }
262
264
  };
263
265
  exports.ConnectorSourceCredentialsService = ConnectorSourceCredentialsService;
264
- exports.ConnectorSourceCredentialsService = ConnectorSourceCredentialsService = __decorate([
266
+ exports.ConnectorSourceCredentialsService = ConnectorSourceCredentialsService = ConnectorSourceCredentialsService_1 = __decorate([
265
267
  (0, common_1.Injectable)(),
266
268
  __param(0, (0, typeorm_1.InjectRepository)(connector_source_credentials_entity_1.ConnectorSourceCredentials)),
267
269
  __metadata("design:paramtypes", [typeorm_2.Repository])
@@ -0,0 +1,47 @@
1
+ import { Core } from '@owox/connectors';
2
+ interface ConnectorSpecificationOneOf {
3
+ label: string;
4
+ value: string;
5
+ requiredType: string;
6
+ attributes?: Core.CONFIG_ATTRIBUTES[];
7
+ oauthParams?: Record<string, unknown>;
8
+ items: Record<string, ConnectorConfigField>;
9
+ }
10
+ interface ConnectorConfigField {
11
+ description: string;
12
+ label: string;
13
+ default: unknown;
14
+ requiredType: string;
15
+ isRequired: boolean;
16
+ options?: unknown[];
17
+ placeholder?: string;
18
+ minimum?: number;
19
+ attributes?: Core.CONFIG_ATTRIBUTES[];
20
+ optionsDependsOn?: string[];
21
+ oneOf?: ConnectorSpecificationOneOf[];
22
+ }
23
+ export interface ConnectorConfig {
24
+ [key: string]: ConnectorConfigField;
25
+ }
26
+ export declare function mapConnectorSpecification(config: ConnectorConfig): {
27
+ oneOf: {
28
+ label: string;
29
+ value: string;
30
+ requiredType: string;
31
+ attributes: any[] | undefined;
32
+ oauthParams: Record<string, unknown> | undefined;
33
+ items: Record<string, unknown>;
34
+ }[] | undefined;
35
+ name: string;
36
+ title: string;
37
+ description: string;
38
+ default: unknown;
39
+ requiredType: string;
40
+ required: boolean;
41
+ options: unknown[] | undefined;
42
+ placeholder: string | undefined;
43
+ minimum: number | undefined;
44
+ attributes: any[] | undefined;
45
+ optionsDependsOn: string[] | undefined;
46
+ }[];
47
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapConnectorSpecification = mapConnectorSpecification;
4
+ const connectors_1 = require("@owox/connectors");
5
+ function mapConnectorSpecification(config) {
6
+ const result = Object.keys(config).map(key => {
7
+ const item = {
8
+ ...mapConfigFieldToSchema(key, config[key]),
9
+ oneOf: config[key].oneOf?.map(oneOf => {
10
+ return {
11
+ label: oneOf.label,
12
+ value: oneOf.value,
13
+ requiredType: oneOf.requiredType,
14
+ attributes: oneOf.attributes,
15
+ oauthParams: oneOf.oauthParams,
16
+ items: Object.entries(oneOf.items).reduce((acc, [itemKey, itemValue]) => {
17
+ acc[itemKey] = mapConfigFieldToSchema(itemKey, itemValue);
18
+ return acc;
19
+ }, {}),
20
+ };
21
+ }),
22
+ };
23
+ return item;
24
+ });
25
+ return result;
26
+ }
27
+ function mapConfigFieldToSchema(name, field) {
28
+ const item = {
29
+ name,
30
+ title: field.label,
31
+ description: field.description,
32
+ default: field.default,
33
+ requiredType: field.requiredType,
34
+ required: field.isRequired,
35
+ options: field.options,
36
+ placeholder: field.placeholder,
37
+ minimum: field.minimum,
38
+ attributes: field.attributes,
39
+ optionsDependsOn: field.optionsDependsOn,
40
+ };
41
+ if (!(field.attributes ?? []).includes(connectors_1.Core.CONFIG_ATTRIBUTES.SECRET)) {
42
+ return item;
43
+ }
44
+ return { ...item, default: undefined, options: undefined, placeholder: undefined };
45
+ }
46
+ //# sourceMappingURL=connector-specification.mapper.js.map
@@ -0,0 +1,43 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ export declare const TEST_DATE_WINDOW_DAYS = 2;
3
+ export declare const MAX_TEST_OUTPUT_LENGTH: number;
4
+ export declare const CONNECTOR_TEST_CONCURRENCY_LIMIT_CODE = "CONNECTOR_TEST_CONCURRENCY_LIMIT";
5
+ export interface ConnectorTestResult {
6
+ rows: Record<string, unknown>[];
7
+ logs: string[];
8
+ error: string | null;
9
+ sample: Record<string, unknown>[];
10
+ }
11
+ export interface ConnectorTestRequest {
12
+ projectId: string;
13
+ manifest: Record<string, unknown>;
14
+ node: string;
15
+ configuration: Record<string, unknown>;
16
+ maxRows?: number;
17
+ maxPages?: number;
18
+ timeoutMs?: number;
19
+ }
20
+ export interface ConnectorTestHooks {
21
+ hang?: boolean;
22
+ env?: Record<string, string>;
23
+ }
24
+ export declare class ConnectorTestService {
25
+ private readonly configService?;
26
+ private readonly activeTestsByProject;
27
+ private activeTestsTotal;
28
+ constructor(configService?: ConfigService | undefined);
29
+ wrapConfig(configuration: Record<string, unknown>): Record<string, {
30
+ value: unknown;
31
+ }>;
32
+ pruneToNode(manifest: Record<string, unknown>, node: string): Record<string, unknown>;
33
+ selectNodeFields(manifest: Record<string, unknown>, node: string): string;
34
+ private manifestParseError;
35
+ private assertFitsChildEnv;
36
+ protected runnerPath(): string;
37
+ private stopChild;
38
+ private testDateWindow;
39
+ private limit;
40
+ private acquireTestSlot;
41
+ runTest(args: ConnectorTestRequest, hooks?: ConnectorTestHooks): Promise<ConnectorTestResult>;
42
+ private execute;
43
+ }