@solidxai/core 0.1.12 → 0.1.13-beta.10

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 (687) hide show
  1. package/CHANGELOG.md +3786 -0
  2. package/dist/commands/run-tests.command.d.ts +7 -1
  3. package/dist/commands/run-tests.command.d.ts.map +1 -1
  4. package/dist/commands/run-tests.command.js +49 -3
  5. package/dist/commands/run-tests.command.js.map +1 -1
  6. package/dist/commands/seed.command.d.ts +2 -0
  7. package/dist/commands/seed.command.d.ts.map +1 -1
  8. package/dist/commands/seed.command.js +21 -0
  9. package/dist/commands/seed.command.js.map +1 -1
  10. package/dist/constants/chatter-message.constants.d.ts +1 -0
  11. package/dist/constants/chatter-message.constants.d.ts.map +1 -1
  12. package/dist/constants/chatter-message.constants.js +3 -1
  13. package/dist/constants/chatter-message.constants.js.map +1 -1
  14. package/dist/constants/draft-publish-fields.d.ts +2 -0
  15. package/dist/constants/draft-publish-fields.d.ts.map +1 -0
  16. package/dist/constants/draft-publish-fields.js +5 -0
  17. package/dist/constants/draft-publish-fields.js.map +1 -0
  18. package/dist/constants/media-file-types.d.ts +9 -0
  19. package/dist/constants/media-file-types.d.ts.map +1 -1
  20. package/dist/constants/media-file-types.js +27 -1
  21. package/dist/constants/media-file-types.js.map +1 -1
  22. package/dist/constants/user.constants.d.ts +2 -0
  23. package/dist/constants/user.constants.d.ts.map +1 -0
  24. package/dist/constants/user.constants.js +5 -0
  25. package/dist/constants/user.constants.js.map +1 -0
  26. package/dist/controllers/action-metadata.controller.d.ts +1 -1
  27. package/dist/controllers/action-metadata.controller.js +1 -1
  28. package/dist/controllers/agent-event.controller.d.ts +1 -1
  29. package/dist/controllers/agent-event.controller.js +1 -1
  30. package/dist/controllers/agent-session.controller.d.ts +1 -1
  31. package/dist/controllers/agent-session.controller.js +1 -1
  32. package/dist/controllers/chatter-message.controller.d.ts +5 -0
  33. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  34. package/dist/controllers/chatter-message.controller.js +14 -0
  35. package/dist/controllers/chatter-message.controller.js.map +1 -1
  36. package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -1
  37. package/dist/controllers/dashboard-user-layout.controller.js +1 -1
  38. package/dist/controllers/email-template.controller.d.ts +1 -1
  39. package/dist/controllers/email-template.controller.js +1 -1
  40. package/dist/controllers/export-template.controller.d.ts +1 -1
  41. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  42. package/dist/controllers/export-template.controller.js +6 -4
  43. package/dist/controllers/export-template.controller.js.map +1 -1
  44. package/dist/controllers/export-transaction.controller.d.ts +1 -1
  45. package/dist/controllers/export-transaction.controller.js +1 -1
  46. package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -1
  47. package/dist/controllers/import-transaction-error-log.controller.js +1 -1
  48. package/dist/controllers/import-transaction.controller.d.ts +1 -1
  49. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  50. package/dist/controllers/import-transaction.controller.js +7 -7
  51. package/dist/controllers/import-transaction.controller.js.map +1 -1
  52. package/dist/controllers/list-of-values.controller.d.ts +1 -1
  53. package/dist/controllers/list-of-values.controller.js +1 -1
  54. package/dist/controllers/locale.controller.d.ts +1 -1
  55. package/dist/controllers/locale.controller.js +1 -1
  56. package/dist/controllers/mcp-audit-log.controller.d.ts +1 -1
  57. package/dist/controllers/mcp-audit-log.controller.js +1 -1
  58. package/dist/controllers/media.controller.d.ts +2 -2
  59. package/dist/controllers/media.controller.d.ts.map +1 -1
  60. package/dist/controllers/media.controller.js +13 -8
  61. package/dist/controllers/media.controller.js.map +1 -1
  62. package/dist/controllers/menu-item-metadata.controller.d.ts +1 -1
  63. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  64. package/dist/controllers/model-sequence.controller.d.ts +1 -1
  65. package/dist/controllers/model-sequence.controller.js +1 -1
  66. package/dist/controllers/module-package.controller.d.ts.map +1 -1
  67. package/dist/controllers/module-package.controller.js +2 -3
  68. package/dist/controllers/module-package.controller.js.map +1 -1
  69. package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
  70. package/dist/controllers/mq-message-queue.controller.js +1 -1
  71. package/dist/controllers/mq-message.controller.d.ts +1 -1
  72. package/dist/controllers/mq-message.controller.js +1 -1
  73. package/dist/controllers/permission-metadata.controller.d.ts +1 -1
  74. package/dist/controllers/permission-metadata.controller.js +1 -1
  75. package/dist/controllers/role-metadata.controller.d.ts +1 -1
  76. package/dist/controllers/role-metadata.controller.js +1 -1
  77. package/dist/controllers/saved-filters.controller.d.ts +1 -1
  78. package/dist/controllers/saved-filters.controller.js +1 -1
  79. package/dist/controllers/scheduled-job.controller.d.ts +1 -1
  80. package/dist/controllers/scheduled-job.controller.js +1 -1
  81. package/dist/controllers/security-rule.controller.d.ts +1 -1
  82. package/dist/controllers/security-rule.controller.js +1 -1
  83. package/dist/controllers/sms-template.controller.d.ts +1 -1
  84. package/dist/controllers/sms-template.controller.js +1 -1
  85. package/dist/controllers/user-activity-history.controller.d.ts +1 -1
  86. package/dist/controllers/user-activity-history.controller.js +1 -1
  87. package/dist/controllers/user-view-metadata.controller.d.ts +1 -1
  88. package/dist/controllers/user-view-metadata.controller.js +1 -1
  89. package/dist/controllers/user.controller.d.ts +2 -2
  90. package/dist/controllers/user.controller.js +2 -2
  91. package/dist/controllers/view-metadata.controller.d.ts +3 -3
  92. package/dist/controllers/view-metadata.controller.js +1 -1
  93. package/dist/controllers/workflow-definition.controller.d.ts +38 -0
  94. package/dist/controllers/workflow-definition.controller.d.ts.map +1 -0
  95. package/dist/controllers/workflow-definition.controller.js +272 -0
  96. package/dist/controllers/workflow-definition.controller.js.map +1 -0
  97. package/dist/controllers/workflow-execution-artifact.controller.d.ts +24 -0
  98. package/dist/controllers/workflow-execution-artifact.controller.d.ts.map +1 -0
  99. package/dist/controllers/workflow-execution-artifact.controller.js +179 -0
  100. package/dist/controllers/workflow-execution-artifact.controller.js.map +1 -0
  101. package/dist/controllers/workflow-execution-log.controller.d.ts +24 -0
  102. package/dist/controllers/workflow-execution-log.controller.d.ts.map +1 -0
  103. package/dist/controllers/workflow-execution-log.controller.js +179 -0
  104. package/dist/controllers/workflow-execution-log.controller.js.map +1 -0
  105. package/dist/controllers/workflow-execution.controller.d.ts +29 -0
  106. package/dist/controllers/workflow-execution.controller.d.ts.map +1 -0
  107. package/dist/controllers/workflow-execution.controller.js +227 -0
  108. package/dist/controllers/workflow-execution.controller.js.map +1 -0
  109. package/dist/controllers/workflow-secret.controller.d.ts +24 -0
  110. package/dist/controllers/workflow-secret.controller.d.ts.map +1 -0
  111. package/dist/controllers/workflow-secret.controller.js +179 -0
  112. package/dist/controllers/workflow-secret.controller.js.map +1 -0
  113. package/dist/controllers/workflow-step-execution.controller.d.ts +24 -0
  114. package/dist/controllers/workflow-step-execution.controller.d.ts.map +1 -0
  115. package/dist/controllers/workflow-step-execution.controller.js +179 -0
  116. package/dist/controllers/workflow-step-execution.controller.js.map +1 -0
  117. package/dist/controllers/workflow-trigger-execution.controller.d.ts +24 -0
  118. package/dist/controllers/workflow-trigger-execution.controller.d.ts.map +1 -0
  119. package/dist/controllers/workflow-trigger-execution.controller.js +179 -0
  120. package/dist/controllers/workflow-trigger-execution.controller.js.map +1 -0
  121. package/dist/decorators/workflow-field-data-provider.decorator.d.ts +3 -0
  122. package/dist/decorators/workflow-field-data-provider.decorator.d.ts.map +1 -0
  123. package/dist/decorators/workflow-field-data-provider.decorator.js +11 -0
  124. package/dist/decorators/workflow-field-data-provider.decorator.js.map +1 -0
  125. package/dist/decorators/workflow-node-provider.decorator.d.ts +4 -0
  126. package/dist/decorators/workflow-node-provider.decorator.d.ts.map +1 -0
  127. package/dist/decorators/workflow-node-provider.decorator.js +13 -0
  128. package/dist/decorators/workflow-node-provider.decorator.js.map +1 -0
  129. package/dist/dtos/basic-filters.dto.d.ts +0 -1
  130. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  131. package/dist/dtos/basic-filters.dto.js +1 -6
  132. package/dist/dtos/basic-filters.dto.js.map +1 -1
  133. package/dist/dtos/create-workflow-definition.dto.d.ts +14 -0
  134. package/dist/dtos/create-workflow-definition.dto.d.ts.map +1 -0
  135. package/dist/dtos/create-workflow-definition.dto.js +92 -0
  136. package/dist/dtos/create-workflow-definition.dto.js.map +1 -0
  137. package/dist/dtos/create-workflow-execution-artifact.dto.d.ts +22 -0
  138. package/dist/dtos/create-workflow-execution-artifact.dto.d.ts.map +1 -0
  139. package/dist/dtos/create-workflow-execution-artifact.dto.js +139 -0
  140. package/dist/dtos/create-workflow-execution-artifact.dto.js.map +1 -0
  141. package/dist/dtos/create-workflow-execution-log.dto.d.ts +18 -0
  142. package/dist/dtos/create-workflow-execution-log.dto.d.ts.map +1 -0
  143. package/dist/dtos/create-workflow-execution-log.dto.js +116 -0
  144. package/dist/dtos/create-workflow-execution-log.dto.js.map +1 -0
  145. package/dist/dtos/create-workflow-execution.dto.d.ts +33 -0
  146. package/dist/dtos/create-workflow-execution.dto.d.ts.map +1 -0
  147. package/dist/dtos/create-workflow-execution.dto.js +186 -0
  148. package/dist/dtos/create-workflow-execution.dto.js.map +1 -0
  149. package/dist/dtos/create-workflow-secret.dto.d.ts +11 -0
  150. package/dist/dtos/create-workflow-secret.dto.d.ts.map +1 -0
  151. package/dist/dtos/create-workflow-secret.dto.js +74 -0
  152. package/dist/dtos/create-workflow-secret.dto.js.map +1 -0
  153. package/dist/dtos/create-workflow-step-execution.dto.d.ts +27 -0
  154. package/dist/dtos/create-workflow-step-execution.dto.d.ts.map +1 -0
  155. package/dist/dtos/create-workflow-step-execution.dto.js +171 -0
  156. package/dist/dtos/create-workflow-step-execution.dto.js.map +1 -0
  157. package/dist/dtos/create-workflow-trigger-execution.dto.d.ts +25 -0
  158. package/dist/dtos/create-workflow-trigger-execution.dto.d.ts.map +1 -0
  159. package/dist/dtos/create-workflow-trigger-execution.dto.js +158 -0
  160. package/dist/dtos/create-workflow-trigger-execution.dto.js.map +1 -0
  161. package/dist/dtos/execute-workflow.dto.d.ts +7 -0
  162. package/dist/dtos/execute-workflow.dto.d.ts.map +1 -0
  163. package/dist/dtos/execute-workflow.dto.js +11 -0
  164. package/dist/dtos/execute-workflow.dto.js.map +1 -0
  165. package/dist/dtos/update-workflow-definition.dto.d.ts +15 -0
  166. package/dist/dtos/update-workflow-definition.dto.d.ts.map +1 -0
  167. package/dist/dtos/update-workflow-definition.dto.js +97 -0
  168. package/dist/dtos/update-workflow-definition.dto.js.map +1 -0
  169. package/dist/dtos/update-workflow-execution-artifact.dto.d.ts +23 -0
  170. package/dist/dtos/update-workflow-execution-artifact.dto.d.ts.map +1 -0
  171. package/dist/dtos/update-workflow-execution-artifact.dto.js +143 -0
  172. package/dist/dtos/update-workflow-execution-artifact.dto.js.map +1 -0
  173. package/dist/dtos/update-workflow-execution-log.dto.d.ts +19 -0
  174. package/dist/dtos/update-workflow-execution-log.dto.d.ts.map +1 -0
  175. package/dist/dtos/update-workflow-execution-log.dto.js +121 -0
  176. package/dist/dtos/update-workflow-execution-log.dto.js.map +1 -0
  177. package/dist/dtos/update-workflow-execution.dto.d.ts +34 -0
  178. package/dist/dtos/update-workflow-execution.dto.d.ts.map +1 -0
  179. package/dist/dtos/update-workflow-execution.dto.js +190 -0
  180. package/dist/dtos/update-workflow-execution.dto.js.map +1 -0
  181. package/dist/dtos/update-workflow-secret.dto.d.ts +12 -0
  182. package/dist/dtos/update-workflow-secret.dto.d.ts.map +1 -0
  183. package/dist/dtos/update-workflow-secret.dto.js +80 -0
  184. package/dist/dtos/update-workflow-secret.dto.js.map +1 -0
  185. package/dist/dtos/update-workflow-step-execution.dto.d.ts +28 -0
  186. package/dist/dtos/update-workflow-step-execution.dto.d.ts.map +1 -0
  187. package/dist/dtos/update-workflow-step-execution.dto.js +175 -0
  188. package/dist/dtos/update-workflow-step-execution.dto.js.map +1 -0
  189. package/dist/dtos/update-workflow-trigger-execution.dto.d.ts +26 -0
  190. package/dist/dtos/update-workflow-trigger-execution.dto.d.ts.map +1 -0
  191. package/dist/dtos/update-workflow-trigger-execution.dto.js +163 -0
  192. package/dist/dtos/update-workflow-trigger-execution.dto.js.map +1 -0
  193. package/dist/dtos/validate-workflow-definition.dto.d.ts +4 -0
  194. package/dist/dtos/validate-workflow-definition.dto.d.ts.map +1 -0
  195. package/dist/dtos/validate-workflow-definition.dto.js +11 -0
  196. package/dist/dtos/validate-workflow-definition.dto.js.map +1 -0
  197. package/dist/entities/common.entity.d.ts +4 -0
  198. package/dist/entities/common.entity.d.ts.map +1 -1
  199. package/dist/entities/common.entity.js +25 -1
  200. package/dist/entities/common.entity.js.map +1 -1
  201. package/dist/entities/user.entity.d.ts.map +1 -1
  202. package/dist/entities/user.entity.js +36 -0
  203. package/dist/entities/user.entity.js.map +1 -1
  204. package/dist/entities/workflow-definition.entity.d.ts +15 -0
  205. package/dist/entities/workflow-definition.entity.d.ts.map +1 -0
  206. package/dist/entities/workflow-definition.entity.js +77 -0
  207. package/dist/entities/workflow-definition.entity.js.map +1 -0
  208. package/dist/entities/workflow-execution-artifact.entity.d.ts +23 -0
  209. package/dist/entities/workflow-execution-artifact.entity.d.ts.map +1 -0
  210. package/dist/entities/workflow-execution-artifact.entity.js +113 -0
  211. package/dist/entities/workflow-execution-artifact.entity.js.map +1 -0
  212. package/dist/entities/workflow-execution-log.entity.d.ts +19 -0
  213. package/dist/entities/workflow-execution-log.entity.d.ts.map +1 -0
  214. package/dist/entities/workflow-execution-log.entity.js +95 -0
  215. package/dist/entities/workflow-execution-log.entity.js.map +1 -0
  216. package/dist/entities/workflow-execution.entity.d.ts +28 -0
  217. package/dist/entities/workflow-execution.entity.d.ts.map +1 -0
  218. package/dist/entities/workflow-execution.entity.js +124 -0
  219. package/dist/entities/workflow-execution.entity.js.map +1 -0
  220. package/dist/entities/workflow-secret.entity.d.ts +12 -0
  221. package/dist/entities/workflow-secret.entity.d.ts.map +1 -0
  222. package/dist/entities/workflow-secret.entity.js +66 -0
  223. package/dist/entities/workflow-secret.entity.js.map +1 -0
  224. package/dist/entities/workflow-step-execution.entity.d.ts +28 -0
  225. package/dist/entities/workflow-step-execution.entity.d.ts.map +1 -0
  226. package/dist/entities/workflow-step-execution.entity.js +138 -0
  227. package/dist/entities/workflow-step-execution.entity.js.map +1 -0
  228. package/dist/entities/workflow-trigger-execution.entity.d.ts +26 -0
  229. package/dist/entities/workflow-trigger-execution.entity.d.ts.map +1 -0
  230. package/dist/entities/workflow-trigger-execution.entity.js +127 -0
  231. package/dist/entities/workflow-trigger-execution.entity.js.map +1 -0
  232. package/dist/factories/mail.factory.d.ts.map +1 -1
  233. package/dist/factories/mail.factory.js +4 -0
  234. package/dist/factories/mail.factory.js.map +1 -1
  235. package/dist/factories/sms.factory.d.ts.map +1 -1
  236. package/dist/factories/sms.factory.js +4 -1
  237. package/dist/factories/sms.factory.js.map +1 -1
  238. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -0
  239. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  240. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +18 -11
  241. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  242. package/dist/helpers/file-download.helper.d.ts +9 -0
  243. package/dist/helpers/file-download.helper.d.ts.map +1 -0
  244. package/dist/helpers/file-download.helper.js +14 -0
  245. package/dist/helpers/file-download.helper.js.map +1 -0
  246. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  247. package/dist/helpers/model-metadata-helper.service.js +30 -1
  248. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  249. package/dist/helpers/solid-registry.d.ts +5 -1
  250. package/dist/helpers/solid-registry.d.ts.map +1 -1
  251. package/dist/helpers/solid-registry.js +18 -1
  252. package/dist/helpers/solid-registry.js.map +1 -1
  253. package/dist/index.d.ts +59 -0
  254. package/dist/index.d.ts.map +1 -1
  255. package/dist/index.js +59 -0
  256. package/dist/index.js.map +1 -1
  257. package/dist/interfaces/workflow-node-handler.interface.d.ts +5 -0
  258. package/dist/interfaces/workflow-node-handler.interface.d.ts.map +1 -0
  259. package/dist/interfaces/workflow-node-handler.interface.js +3 -0
  260. package/dist/interfaces/workflow-node-handler.interface.js.map +1 -0
  261. package/dist/interfaces.d.ts +25 -0
  262. package/dist/interfaces.d.ts.map +1 -1
  263. package/dist/interfaces.js.map +1 -1
  264. package/dist/jobs/database/workflow-execution-publisher-database.service.d.ts +12 -0
  265. package/dist/jobs/database/workflow-execution-publisher-database.service.d.ts.map +1 -0
  266. package/dist/jobs/database/workflow-execution-publisher-database.service.js +39 -0
  267. package/dist/jobs/database/workflow-execution-publisher-database.service.js.map +1 -0
  268. package/dist/jobs/database/workflow-execution-queue-options-database.d.ts +8 -0
  269. package/dist/jobs/database/workflow-execution-queue-options-database.d.ts.map +1 -0
  270. package/dist/jobs/database/workflow-execution-queue-options-database.js +10 -0
  271. package/dist/jobs/database/workflow-execution-queue-options-database.js.map +1 -0
  272. package/dist/jobs/database/workflow-execution-subscriber-database.service.d.ts +19 -0
  273. package/dist/jobs/database/workflow-execution-subscriber-database.service.d.ts.map +1 -0
  274. package/dist/jobs/database/workflow-execution-subscriber-database.service.js +55 -0
  275. package/dist/jobs/database/workflow-execution-subscriber-database.service.js.map +1 -0
  276. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.d.ts +12 -0
  277. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.d.ts.map +1 -0
  278. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.js +39 -0
  279. package/dist/jobs/rabbitmq/workflow-execution-publisher.service.js.map +1 -0
  280. package/dist/jobs/rabbitmq/workflow-execution-queue-options.d.ts +8 -0
  281. package/dist/jobs/rabbitmq/workflow-execution-queue-options.d.ts.map +1 -0
  282. package/dist/jobs/rabbitmq/workflow-execution-queue-options.js +10 -0
  283. package/dist/jobs/rabbitmq/workflow-execution-queue-options.js.map +1 -0
  284. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.d.ts +17 -0
  285. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.d.ts.map +1 -0
  286. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.js +52 -0
  287. package/dist/jobs/rabbitmq/workflow-execution-subscriber.service.js.map +1 -0
  288. package/dist/jobs/redis/workflow-execution-publisher-redis.service.d.ts +12 -0
  289. package/dist/jobs/redis/workflow-execution-publisher-redis.service.d.ts.map +1 -0
  290. package/dist/jobs/redis/workflow-execution-publisher-redis.service.js +39 -0
  291. package/dist/jobs/redis/workflow-execution-publisher-redis.service.js.map +1 -0
  292. package/dist/jobs/redis/workflow-execution-queue-options-redis.d.ts +8 -0
  293. package/dist/jobs/redis/workflow-execution-queue-options-redis.d.ts.map +1 -0
  294. package/dist/jobs/redis/workflow-execution-queue-options-redis.js +10 -0
  295. package/dist/jobs/redis/workflow-execution-queue-options-redis.js.map +1 -0
  296. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.d.ts +17 -0
  297. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.d.ts.map +1 -0
  298. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.js +52 -0
  299. package/dist/jobs/redis/workflow-execution-subscriber-redis.service.js.map +1 -0
  300. package/dist/repository/security-rule.repository.d.ts +1 -0
  301. package/dist/repository/security-rule.repository.d.ts.map +1 -1
  302. package/dist/repository/security-rule.repository.js +28 -7
  303. package/dist/repository/security-rule.repository.js.map +1 -1
  304. package/dist/repository/workflow-definition.repository.d.ts +12 -0
  305. package/dist/repository/workflow-definition.repository.d.ts.map +1 -0
  306. package/dist/repository/workflow-definition.repository.js +39 -0
  307. package/dist/repository/workflow-definition.repository.js.map +1 -0
  308. package/dist/repository/workflow-execution-artifact.repository.d.ts +12 -0
  309. package/dist/repository/workflow-execution-artifact.repository.d.ts.map +1 -0
  310. package/dist/repository/workflow-execution-artifact.repository.js +39 -0
  311. package/dist/repository/workflow-execution-artifact.repository.js.map +1 -0
  312. package/dist/repository/workflow-execution-log.repository.d.ts +12 -0
  313. package/dist/repository/workflow-execution-log.repository.d.ts.map +1 -0
  314. package/dist/repository/workflow-execution-log.repository.js +39 -0
  315. package/dist/repository/workflow-execution-log.repository.js.map +1 -0
  316. package/dist/repository/workflow-execution.repository.d.ts +12 -0
  317. package/dist/repository/workflow-execution.repository.d.ts.map +1 -0
  318. package/dist/repository/workflow-execution.repository.js +39 -0
  319. package/dist/repository/workflow-execution.repository.js.map +1 -0
  320. package/dist/repository/workflow-secret.repository.d.ts +12 -0
  321. package/dist/repository/workflow-secret.repository.d.ts.map +1 -0
  322. package/dist/repository/workflow-secret.repository.js +39 -0
  323. package/dist/repository/workflow-secret.repository.js.map +1 -0
  324. package/dist/repository/workflow-step-execution.repository.d.ts +12 -0
  325. package/dist/repository/workflow-step-execution.repository.d.ts.map +1 -0
  326. package/dist/repository/workflow-step-execution.repository.js +39 -0
  327. package/dist/repository/workflow-step-execution.repository.js.map +1 -0
  328. package/dist/repository/workflow-trigger-execution.repository.d.ts +12 -0
  329. package/dist/repository/workflow-trigger-execution.repository.d.ts.map +1 -0
  330. package/dist/repository/workflow-trigger-execution.repository.js +39 -0
  331. package/dist/repository/workflow-trigger-execution.repository.js.map +1 -0
  332. package/dist/seeders/module-metadata-seeder.service.d.ts +6 -0
  333. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  334. package/dist/seeders/module-metadata-seeder.service.js +185 -27
  335. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  336. package/dist/seeders/module-test-data.service.d.ts +3 -1
  337. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  338. package/dist/seeders/module-test-data.service.js +8 -2
  339. package/dist/seeders/module-test-data.service.js.map +1 -1
  340. package/dist/seeders/seed-data/solid-core-metadata.json +11494 -5570
  341. package/dist/services/authentication.service.d.ts +4 -1
  342. package/dist/services/authentication.service.d.ts.map +1 -1
  343. package/dist/services/authentication.service.js +52 -4
  344. package/dist/services/authentication.service.js.map +1 -1
  345. package/dist/services/chatter-message.service.d.ts +11 -0
  346. package/dist/services/chatter-message.service.d.ts.map +1 -1
  347. package/dist/services/chatter-message.service.js +53 -4
  348. package/dist/services/chatter-message.service.js.map +1 -1
  349. package/dist/services/crud-helper.service.d.ts +21 -3
  350. package/dist/services/crud-helper.service.d.ts.map +1 -1
  351. package/dist/services/crud-helper.service.js +129 -54
  352. package/dist/services/crud-helper.service.js.map +1 -1
  353. package/dist/services/crud.service.d.ts +14 -1
  354. package/dist/services/crud.service.d.ts.map +1 -1
  355. package/dist/services/crud.service.js +107 -67
  356. package/dist/services/crud.service.js.map +1 -1
  357. package/dist/services/datasource-introspection.service.d.ts.map +1 -1
  358. package/dist/services/datasource-introspection.service.js.map +1 -1
  359. package/dist/services/draft-publish-helper.service.d.ts +52 -0
  360. package/dist/services/draft-publish-helper.service.d.ts.map +1 -0
  361. package/dist/services/draft-publish-helper.service.js +368 -0
  362. package/dist/services/draft-publish-helper.service.js.map +1 -0
  363. package/dist/services/internationalisation-helper.service.d.ts +19 -0
  364. package/dist/services/internationalisation-helper.service.d.ts.map +1 -0
  365. package/dist/services/internationalisation-helper.service.js +107 -0
  366. package/dist/services/internationalisation-helper.service.js.map +1 -0
  367. package/dist/services/locale.service.d.ts +1 -1
  368. package/dist/services/media.service.d.ts +3 -2
  369. package/dist/services/media.service.d.ts.map +1 -1
  370. package/dist/services/media.service.js +44 -29
  371. package/dist/services/media.service.js.map +1 -1
  372. package/dist/services/metadata-validation.service.d.ts +7 -0
  373. package/dist/services/metadata-validation.service.d.ts.map +1 -0
  374. package/dist/services/metadata-validation.service.js +42 -0
  375. package/dist/services/metadata-validation.service.js.map +1 -0
  376. package/dist/services/model-metadata.service.d.ts.map +1 -1
  377. package/dist/services/model-metadata.service.js +2 -1
  378. package/dist/services/model-metadata.service.js.map +1 -1
  379. package/dist/services/object.utils.d.ts +2 -0
  380. package/dist/services/object.utils.d.ts.map +1 -0
  381. package/dist/services/object.utils.js +11 -0
  382. package/dist/services/object.utils.js.map +1 -0
  383. package/dist/services/settings/default-settings-provider.service.d.ts +46 -6
  384. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  385. package/dist/services/settings/default-settings-provider.service.js +29 -3
  386. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  387. package/dist/services/solid-introspect.service.d.ts +1 -0
  388. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  389. package/dist/services/solid-introspect.service.js +12 -0
  390. package/dist/services/solid-introspect.service.js.map +1 -1
  391. package/dist/services/user.service.d.ts +2 -2
  392. package/dist/services/user.service.d.ts.map +1 -1
  393. package/dist/services/user.service.js +9 -3
  394. package/dist/services/user.service.js.map +1 -1
  395. package/dist/services/view-metadata.service.d.ts +6 -3
  396. package/dist/services/view-metadata.service.d.ts.map +1 -1
  397. package/dist/services/view-metadata.service.js +60 -63
  398. package/dist/services/view-metadata.service.js.map +1 -1
  399. package/dist/services/workflow/nodes/execution-fail.node.d.ts +6 -0
  400. package/dist/services/workflow/nodes/execution-fail.node.d.ts.map +1 -0
  401. package/dist/services/workflow/nodes/execution-fail.node.js +81 -0
  402. package/dist/services/workflow/nodes/execution-fail.node.js.map +1 -0
  403. package/dist/services/workflow/nodes/for-each.node.d.ts +8 -0
  404. package/dist/services/workflow/nodes/for-each.node.d.ts.map +1 -0
  405. package/dist/services/workflow/nodes/for-each.node.js +204 -0
  406. package/dist/services/workflow/nodes/for-each.node.js.map +1 -0
  407. package/dist/services/workflow/nodes/http-request.node.d.ts +13 -0
  408. package/dist/services/workflow/nodes/http-request.node.d.ts.map +1 -0
  409. package/dist/services/workflow/nodes/http-request.node.js +549 -0
  410. package/dist/services/workflow/nodes/http-request.node.js.map +1 -0
  411. package/dist/services/workflow/nodes/if.node.d.ts +6 -0
  412. package/dist/services/workflow/nodes/if.node.d.ts.map +1 -0
  413. package/dist/services/workflow/nodes/if.node.js +100 -0
  414. package/dist/services/workflow/nodes/if.node.js.map +1 -0
  415. package/dist/services/workflow/nodes/log-write.node.d.ts +6 -0
  416. package/dist/services/workflow/nodes/log-write.node.d.ts.map +1 -0
  417. package/dist/services/workflow/nodes/log-write.node.js +231 -0
  418. package/dist/services/workflow/nodes/log-write.node.js.map +1 -0
  419. package/dist/services/workflow/nodes/loop-until.node.d.ts +12 -0
  420. package/dist/services/workflow/nodes/loop-until.node.d.ts.map +1 -0
  421. package/dist/services/workflow/nodes/loop-until.node.js +281 -0
  422. package/dist/services/workflow/nodes/loop-until.node.js.map +1 -0
  423. package/dist/services/workflow/nodes/parallel.node.d.ts +6 -0
  424. package/dist/services/workflow/nodes/parallel.node.d.ts.map +1 -0
  425. package/dist/services/workflow/nodes/parallel.node.js +83 -0
  426. package/dist/services/workflow/nodes/parallel.node.js.map +1 -0
  427. package/dist/services/workflow/nodes/runtime-python.node.d.ts +13 -0
  428. package/dist/services/workflow/nodes/runtime-python.node.d.ts.map +1 -0
  429. package/dist/services/workflow/nodes/runtime-python.node.js +522 -0
  430. package/dist/services/workflow/nodes/runtime-python.node.js.map +1 -0
  431. package/dist/services/workflow/nodes/sequential.node.d.ts +6 -0
  432. package/dist/services/workflow/nodes/sequential.node.d.ts.map +1 -0
  433. package/dist/services/workflow/nodes/sequential.node.js +68 -0
  434. package/dist/services/workflow/nodes/sequential.node.js.map +1 -0
  435. package/dist/services/workflow/nodes/solidx-api.helpers.d.ts +25 -0
  436. package/dist/services/workflow/nodes/solidx-api.helpers.d.ts.map +1 -0
  437. package/dist/services/workflow/nodes/solidx-api.helpers.js +143 -0
  438. package/dist/services/workflow/nodes/solidx-api.helpers.js.map +1 -0
  439. package/dist/services/workflow/nodes/solidx-crud.nodes.d.ts +48 -0
  440. package/dist/services/workflow/nodes/solidx-crud.nodes.d.ts.map +1 -0
  441. package/dist/services/workflow/nodes/solidx-crud.nodes.js +475 -0
  442. package/dist/services/workflow/nodes/solidx-crud.nodes.js.map +1 -0
  443. package/dist/services/workflow/nodes/solidx-login.node.d.ts +6 -0
  444. package/dist/services/workflow/nodes/solidx-login.node.d.ts.map +1 -0
  445. package/dist/services/workflow/nodes/solidx-login.node.js +208 -0
  446. package/dist/services/workflow/nodes/solidx-login.node.js.map +1 -0
  447. package/dist/services/workflow/nodes/solidx-send-email.node.d.ts +11 -0
  448. package/dist/services/workflow/nodes/solidx-send-email.node.d.ts.map +1 -0
  449. package/dist/services/workflow/nodes/solidx-send-email.node.js +437 -0
  450. package/dist/services/workflow/nodes/solidx-send-email.node.js.map +1 -0
  451. package/dist/services/workflow/nodes/solidx-send-sms.node.d.ts +10 -0
  452. package/dist/services/workflow/nodes/solidx-send-sms.node.d.ts.map +1 -0
  453. package/dist/services/workflow/nodes/solidx-send-sms.node.js +347 -0
  454. package/dist/services/workflow/nodes/solidx-send-sms.node.js.map +1 -0
  455. package/dist/services/workflow/nodes/switch.node.d.ts +7 -0
  456. package/dist/services/workflow/nodes/switch.node.d.ts.map +1 -0
  457. package/dist/services/workflow/nodes/switch.node.js +120 -0
  458. package/dist/services/workflow/nodes/switch.node.js.map +1 -0
  459. package/dist/services/workflow/workflow-definition-metadata-sync.service.d.ts +19 -0
  460. package/dist/services/workflow/workflow-definition-metadata-sync.service.d.ts.map +1 -0
  461. package/dist/services/workflow/workflow-definition-metadata-sync.service.js +187 -0
  462. package/dist/services/workflow/workflow-definition-metadata-sync.service.js.map +1 -0
  463. package/dist/services/workflow/workflow-definition-validator.service.d.ts +13 -0
  464. package/dist/services/workflow/workflow-definition-validator.service.d.ts.map +1 -0
  465. package/dist/services/workflow/workflow-definition-validator.service.js +166 -0
  466. package/dist/services/workflow/workflow-definition-validator.service.js.map +1 -0
  467. package/dist/services/workflow/workflow-execution-writer.service.d.ts +26 -0
  468. package/dist/services/workflow/workflow-execution-writer.service.d.ts.map +1 -0
  469. package/dist/services/workflow/workflow-execution-writer.service.js +191 -0
  470. package/dist/services/workflow/workflow-execution-writer.service.js.map +1 -0
  471. package/dist/services/workflow/workflow-expression.service.d.ts +14 -0
  472. package/dist/services/workflow/workflow-expression.service.d.ts.map +1 -0
  473. package/dist/services/workflow/workflow-expression.service.js +157 -0
  474. package/dist/services/workflow/workflow-expression.service.js.map +1 -0
  475. package/dist/services/workflow/workflow-invocation.service.d.ts +11 -0
  476. package/dist/services/workflow/workflow-invocation.service.d.ts.map +1 -0
  477. package/dist/services/workflow/workflow-invocation.service.js +37 -0
  478. package/dist/services/workflow/workflow-invocation.service.js.map +1 -0
  479. package/dist/services/workflow/workflow-node-registry.service.d.ts +19 -0
  480. package/dist/services/workflow/workflow-node-registry.service.d.ts.map +1 -0
  481. package/dist/services/workflow/workflow-node-registry.service.js +117 -0
  482. package/dist/services/workflow/workflow-node-registry.service.js.map +1 -0
  483. package/dist/services/workflow/workflow-runtime.service.d.ts +61 -0
  484. package/dist/services/workflow/workflow-runtime.service.d.ts.map +1 -0
  485. package/dist/services/workflow/workflow-runtime.service.js +706 -0
  486. package/dist/services/workflow/workflow-runtime.service.js.map +1 -0
  487. package/dist/services/workflow/workflow-scheduled-trigger.job.d.ts +10 -0
  488. package/dist/services/workflow/workflow-scheduled-trigger.job.d.ts.map +1 -0
  489. package/dist/services/workflow/workflow-scheduled-trigger.job.js +37 -0
  490. package/dist/services/workflow/workflow-scheduled-trigger.job.js.map +1 -0
  491. package/dist/services/workflow-definition.service.d.ts +52 -0
  492. package/dist/services/workflow-definition.service.d.ts.map +1 -0
  493. package/dist/services/workflow-definition.service.js +251 -0
  494. package/dist/services/workflow-definition.service.js.map +1 -0
  495. package/dist/services/workflow-execution-artifact.service.d.ts +12 -0
  496. package/dist/services/workflow-execution-artifact.service.d.ts.map +1 -0
  497. package/dist/services/workflow-execution-artifact.service.js +38 -0
  498. package/dist/services/workflow-execution-artifact.service.js.map +1 -0
  499. package/dist/services/workflow-execution-log.service.d.ts +12 -0
  500. package/dist/services/workflow-execution-log.service.d.ts.map +1 -0
  501. package/dist/services/workflow-execution-log.service.js +38 -0
  502. package/dist/services/workflow-execution-log.service.js.map +1 -0
  503. package/dist/services/workflow-execution.service.d.ts +12 -0
  504. package/dist/services/workflow-execution.service.d.ts.map +1 -0
  505. package/dist/services/workflow-execution.service.js +38 -0
  506. package/dist/services/workflow-execution.service.js.map +1 -0
  507. package/dist/services/workflow-secret.service.d.ts +25 -0
  508. package/dist/services/workflow-secret.service.d.ts.map +1 -0
  509. package/dist/services/workflow-secret.service.js +152 -0
  510. package/dist/services/workflow-secret.service.js.map +1 -0
  511. package/dist/services/workflow-step-execution.service.d.ts +12 -0
  512. package/dist/services/workflow-step-execution.service.d.ts.map +1 -0
  513. package/dist/services/workflow-step-execution.service.js +38 -0
  514. package/dist/services/workflow-step-execution.service.js.map +1 -0
  515. package/dist/services/workflow-trigger-execution.service.d.ts +12 -0
  516. package/dist/services/workflow-trigger-execution.service.d.ts.map +1 -0
  517. package/dist/services/workflow-trigger-execution.service.js +38 -0
  518. package/dist/services/workflow-trigger-execution.service.js.map +1 -0
  519. package/dist/solid-core.module.d.ts.map +1 -1
  520. package/dist/solid-core.module.js +131 -1
  521. package/dist/solid-core.module.js.map +1 -1
  522. package/dist/testing/adapters/ui/playwright-adapter.d.ts +5 -0
  523. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
  524. package/dist/testing/adapters/ui/playwright-adapter.js +17 -1
  525. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
  526. package/dist/testing/adapters/ui/ui.types.d.ts +2 -0
  527. package/dist/testing/adapters/ui/ui.types.d.ts.map +1 -1
  528. package/dist/testing/adapters/ui/ui.types.js.map +1 -1
  529. package/dist/testing/steps/ui/actions.step.d.ts.map +1 -1
  530. package/dist/testing/steps/ui/actions.step.js +6 -2
  531. package/dist/testing/steps/ui/actions.step.js.map +1 -1
  532. package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
  533. package/dist/testing/steps/ui/assertions.step.js +11 -3
  534. package/dist/testing/steps/ui/assertions.step.js.map +1 -1
  535. package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
  536. package/dist/testing/steps/ui/form.step.js +9 -3
  537. package/dist/testing/steps/ui/form.step.js.map +1 -1
  538. package/dist/testing/steps/ui/manual.step.js +1 -1
  539. package/dist/testing/steps/ui/manual.step.js.map +1 -1
  540. package/dist/testing/steps/ui/navigation.step.d.ts.map +1 -1
  541. package/dist/testing/steps/ui/navigation.step.js +3 -1
  542. package/dist/testing/steps/ui/navigation.step.js.map +1 -1
  543. package/dist/transformers/empty-string-to-null-transformer.d.ts +4 -0
  544. package/dist/transformers/empty-string-to-null-transformer.d.ts.map +1 -0
  545. package/dist/transformers/empty-string-to-null-transformer.js +12 -0
  546. package/dist/transformers/empty-string-to-null-transformer.js.map +1 -0
  547. package/dist/types/workflow-dsl.types.d.ts +291 -0
  548. package/dist/types/workflow-dsl.types.d.ts.map +1 -0
  549. package/dist/types/workflow-dsl.types.js +3 -0
  550. package/dist/types/workflow-dsl.types.js.map +1 -0
  551. package/dist/types/workflow-execution-queue.types.d.ts +4 -0
  552. package/dist/types/workflow-execution-queue.types.d.ts.map +1 -0
  553. package/dist/types/workflow-execution-queue.types.js +3 -0
  554. package/dist/types/workflow-execution-queue.types.js.map +1 -0
  555. package/package.json +3 -2
  556. package/src/commands/run-tests.command.ts +47 -1
  557. package/src/commands/seed.command.ts +19 -0
  558. package/src/constants/chatter-message.constants.ts +12 -0
  559. package/src/constants/draft-publish-fields.ts +5 -0
  560. package/src/constants/media-file-types.ts +50 -0
  561. package/src/constants/user.constants.ts +13 -0
  562. package/src/controllers/chatter-message.controller.ts +8 -0
  563. package/src/controllers/export-template.controller.ts +5 -3
  564. package/src/controllers/import-transaction.controller.ts +6 -6
  565. package/src/controllers/media.controller.ts +17 -6
  566. package/src/controllers/module-package.controller.ts +2 -3
  567. package/src/controllers/workflow-definition.controller.ts +141 -0
  568. package/src/controllers/workflow-execution-artifact.controller.ts +93 -0
  569. package/src/controllers/workflow-execution-log.controller.ts +93 -0
  570. package/src/controllers/workflow-execution.controller.ts +126 -0
  571. package/src/controllers/workflow-secret.controller.ts +90 -0
  572. package/src/controllers/workflow-step-execution.controller.ts +93 -0
  573. package/src/controllers/workflow-trigger-execution.controller.ts +93 -0
  574. package/src/decorators/workflow-field-data-provider.decorator.ts +7 -0
  575. package/src/decorators/workflow-node-provider.decorator.ts +14 -0
  576. package/src/dtos/basic-filters.dto.ts +0 -4
  577. package/src/dtos/create-workflow-definition.dto.ts +60 -0
  578. package/src/dtos/create-workflow-execution-artifact.dto.ts +99 -0
  579. package/src/dtos/create-workflow-execution-log.dto.ts +80 -0
  580. package/src/dtos/create-workflow-execution.dto.ts +137 -0
  581. package/src/dtos/create-workflow-secret.dto.ts +44 -0
  582. package/src/dtos/create-workflow-step-execution.dto.ts +123 -0
  583. package/src/dtos/create-workflow-trigger-execution.dto.ts +114 -0
  584. package/src/dtos/execute-workflow.dto.ts +6 -0
  585. package/src/dtos/update-workflow-definition.dto.ts +67 -0
  586. package/src/dtos/update-workflow-execution-artifact.dto.ts +105 -0
  587. package/src/dtos/update-workflow-execution-log.dto.ts +87 -0
  588. package/src/dtos/update-workflow-execution.dto.ts +144 -0
  589. package/src/dtos/update-workflow-secret.dto.ts +53 -0
  590. package/src/dtos/update-workflow-step-execution.dto.ts +132 -0
  591. package/src/dtos/update-workflow-trigger-execution.dto.ts +122 -0
  592. package/src/dtos/validate-workflow-definition.dto.ts +3 -0
  593. package/src/entities/common.entity.ts +24 -0
  594. package/src/entities/user.entity.ts +53 -36
  595. package/src/entities/workflow-definition.entity.ts +43 -0
  596. package/src/entities/workflow-execution-artifact.entity.ts +72 -0
  597. package/src/entities/workflow-execution-log.entity.ts +58 -0
  598. package/src/entities/workflow-execution.entity.ts +82 -0
  599. package/src/entities/workflow-secret.entity.ts +33 -0
  600. package/src/entities/workflow-step-execution.entity.ts +88 -0
  601. package/src/entities/workflow-trigger-execution.entity.ts +82 -0
  602. package/src/factories/mail.factory.ts +7 -1
  603. package/src/factories/sms.factory.ts +4 -1
  604. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +26 -12
  605. package/src/helpers/file-download.helper.ts +31 -0
  606. package/src/helpers/model-metadata-helper.service.ts +32 -1
  607. package/src/helpers/solid-registry.ts +22 -2
  608. package/src/index.ts +59 -0
  609. package/src/interfaces/workflow-node-handler.interface.ts +10 -0
  610. package/src/interfaces.ts +30 -0
  611. package/src/jobs/database/workflow-execution-publisher-database.service.ts +24 -0
  612. package/src/jobs/database/workflow-execution-queue-options-database.ts +9 -0
  613. package/src/jobs/database/workflow-execution-subscriber-database.service.ts +44 -0
  614. package/src/jobs/rabbitmq/workflow-execution-publisher.service.ts +24 -0
  615. package/src/jobs/rabbitmq/workflow-execution-queue-options.ts +9 -0
  616. package/src/jobs/rabbitmq/workflow-execution-subscriber.service.ts +42 -0
  617. package/src/jobs/redis/workflow-execution-publisher-redis.service.ts +24 -0
  618. package/src/jobs/redis/workflow-execution-queue-options-redis.ts +9 -0
  619. package/src/jobs/redis/workflow-execution-subscriber-redis.service.ts +42 -0
  620. package/src/repository/security-rule.repository.ts +52 -10
  621. package/src/repository/workflow-definition.repository.ts +19 -0
  622. package/src/repository/workflow-execution-artifact.repository.ts +19 -0
  623. package/src/repository/workflow-execution-log.repository.ts +19 -0
  624. package/src/repository/workflow-execution.repository.ts +19 -0
  625. package/src/repository/workflow-secret.repository.ts +19 -0
  626. package/src/repository/workflow-step-execution.repository.ts +19 -0
  627. package/src/repository/workflow-trigger-execution.repository.ts +19 -0
  628. package/src/seeders/module-metadata-seeder.service.ts +216 -40
  629. package/src/seeders/module-test-data.service.ts +6 -0
  630. package/src/seeders/seed-data/solid-core-metadata.json +11494 -5570
  631. package/src/services/authentication.service.ts +76 -5
  632. package/src/services/chatter-message.service.ts +107 -5
  633. package/src/services/crud-helper.service.ts +236 -56
  634. package/src/services/crud.service.ts +159 -104
  635. package/src/services/datasource-introspection.service.ts +5 -0
  636. package/src/services/draft-publish-helper.service.ts +529 -0
  637. package/src/services/internationalisation-helper.service.ts +148 -0
  638. package/src/services/media.service.ts +67 -36
  639. package/src/services/metadata-validation.service.ts +39 -0
  640. package/src/services/model-metadata.service.ts +4 -1
  641. package/src/services/object.utils.ts +10 -0
  642. package/src/services/settings/default-settings-provider.service.ts +35 -3
  643. package/src/services/solid-introspect.service.ts +19 -0
  644. package/src/services/user.service.ts +18 -3
  645. package/src/services/view-metadata.service.ts +80 -154
  646. package/src/services/workflow/nodes/execution-fail.node.ts +82 -0
  647. package/src/services/workflow/nodes/for-each.node.ts +231 -0
  648. package/src/services/workflow/nodes/http-request.node.ts +624 -0
  649. package/src/services/workflow/nodes/if.node.ts +100 -0
  650. package/src/services/workflow/nodes/log-write.node.ts +234 -0
  651. package/src/services/workflow/nodes/loop-until.node.ts +343 -0
  652. package/src/services/workflow/nodes/parallel.node.ts +88 -0
  653. package/src/services/workflow/nodes/runtime-python.node.ts +571 -0
  654. package/src/services/workflow/nodes/sequential.node.ts +65 -0
  655. package/src/services/workflow/nodes/solidx-api.helpers.ts +205 -0
  656. package/src/services/workflow/nodes/solidx-crud.nodes.ts +511 -0
  657. package/src/services/workflow/nodes/solidx-login.node.ts +222 -0
  658. package/src/services/workflow/nodes/solidx-send-email.node.ts +489 -0
  659. package/src/services/workflow/nodes/solidx-send-sms.node.ts +377 -0
  660. package/src/services/workflow/nodes/switch.node.ts +132 -0
  661. package/src/services/workflow/workflow-definition-metadata-sync.service.ts +196 -0
  662. package/src/services/workflow/workflow-definition-validator.service.ts +226 -0
  663. package/src/services/workflow/workflow-execution-writer.service.ts +244 -0
  664. package/src/services/workflow/workflow-expression.service.ts +180 -0
  665. package/src/services/workflow/workflow-invocation.service.ts +39 -0
  666. package/src/services/workflow/workflow-node-registry.service.ts +152 -0
  667. package/src/services/workflow/workflow-runtime.service.ts +934 -0
  668. package/src/services/workflow/workflow-scheduled-trigger.job.ts +33 -0
  669. package/src/services/workflow-definition.service.ts +293 -0
  670. package/src/services/workflow-execution-artifact.service.ts +20 -0
  671. package/src/services/workflow-execution-log.service.ts +20 -0
  672. package/src/services/workflow-execution.service.ts +20 -0
  673. package/src/services/workflow-secret.service.ts +161 -0
  674. package/src/services/workflow-step-execution.service.ts +20 -0
  675. package/src/services/workflow-trigger-execution.service.ts +20 -0
  676. package/src/solid-core.module.ts +144 -3
  677. package/src/testing/README.md +73 -2
  678. package/src/testing/adapters/ui/playwright-adapter.ts +25 -0
  679. package/src/testing/adapters/ui/ui.types.ts +2 -0
  680. package/src/testing/steps/ui/actions.step.ts +8 -4
  681. package/src/testing/steps/ui/assertions.step.ts +18 -5
  682. package/src/testing/steps/ui/form.step.ts +16 -6
  683. package/src/testing/steps/ui/manual.step.ts +1 -1
  684. package/src/testing/steps/ui/navigation.step.ts +4 -2
  685. package/src/transformers/empty-string-to-null-transformer.ts +11 -0
  686. package/src/types/workflow-dsl.types.ts +1030 -0
  687. package/src/types/workflow-execution-queue.types.ts +3 -0
@@ -1,5 +1,6 @@
1
1
  import { CommandRunner } from 'nest-commander';
2
2
  import { ModuleMetadataHelperService } from '../helpers/module-metadata-helper.service';
3
+ import { SettingService } from '../services/setting.service';
3
4
  interface TestRunCommandOptions {
4
5
  module?: string;
5
6
  moduleName?: string;
@@ -10,6 +11,8 @@ interface TestRunCommandOptions {
10
11
  apiBaseUrl?: string;
11
12
  uiBaseUrl?: string;
12
13
  headless?: boolean;
14
+ uiTimeoutMs?: number;
15
+ uiNavigationTimeoutMs?: number;
13
16
  timeoutMs?: number;
14
17
  retries?: number;
15
18
  listSpecs?: boolean;
@@ -18,8 +21,9 @@ interface TestRunCommandOptions {
18
21
  }
19
22
  export declare class TestRunCommand extends CommandRunner {
20
23
  private readonly moduleMetadataHelperService;
24
+ private readonly settingService;
21
25
  private readonly logger;
22
- constructor(moduleMetadataHelperService: ModuleMetadataHelperService);
26
+ constructor(moduleMetadataHelperService: ModuleMetadataHelperService, settingService: SettingService);
23
27
  run(passedParam: string[], options?: TestRunCommandOptions): Promise<void>;
24
28
  parseModule(val: string): string;
25
29
  parseScenarioIds(val: string): string;
@@ -31,6 +35,8 @@ export declare class TestRunCommand extends CommandRunner {
31
35
  parseApiBaseUrl(val: string): string;
32
36
  parseUiBaseUrl(val: string): string;
33
37
  parseHeadless(val: string): boolean;
38
+ parseUiTimeoutMs(val: string): number;
39
+ parseUiNavigationTimeoutMs(val: string): number;
34
40
  parseTimeoutMs(val: string): number;
35
41
  parseRetries(val: string): number;
36
42
  parseRunName(val: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"run-tests.command.d.ts","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAOzF,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAIa,cAAe,SAAQ,aAAa;IAI7C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAH9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAGvC,2BAA2B,EAAE,2BAA2B;IAKrE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoGhF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUxC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASnC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGlC"}
1
+ {"version":3,"file":"run-tests.command.d.ts","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAMzF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAIa,cAAe,SAAQ,aAAa;IAI7C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAGvC,2BAA2B,EAAE,2BAA2B,EACxD,cAAc,EAAE,cAAc;IAK3C,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiHhF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUxC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUnC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAUrC,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS/C,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGlC"}
@@ -52,10 +52,12 @@ const console_reporter_1 = require("../testing/reporter/console-reporter");
52
52
  const webhook_reporter_1 = require("../testing/reporter/webhook-reporter");
53
53
  const run_from_metadata_1 = require("../testing/runner/run-from-metadata");
54
54
  const spec_registry_1 = require("../testing/core/spec-registry");
55
+ const setting_service_1 = require("../services/setting.service");
55
56
  let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_commander_1.CommandRunner {
56
- constructor(moduleMetadataHelperService) {
57
+ constructor(moduleMetadataHelperService, settingService) {
57
58
  super();
58
59
  this.moduleMetadataHelperService = moduleMetadataHelperService;
60
+ this.settingService = settingService;
59
61
  this.logger = new common_1.Logger(TestRunCommand_1.name);
60
62
  }
61
63
  async run(passedParam, options) {
@@ -102,6 +104,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
102
104
  const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;
103
105
  const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;
104
106
  const headless = options?.headless ?? true;
107
+ const uiTimeoutMs = options?.uiTimeoutMs
108
+ ?? toPositiveNumber(process.env.UI_TIMEOUT_MS)
109
+ ?? toPositiveNumber(this.settingService.getConfigValue('uiTestDefaultTimeoutMs'));
110
+ const uiNavigationTimeoutMs = options?.uiNavigationTimeoutMs
111
+ ?? toPositiveNumber(process.env.UI_NAVIGATION_TIMEOUT_MS)
112
+ ?? toPositiveNumber(this.settingService.getConfigValue('uiTestNavigationTimeoutMs'));
105
113
  const printApiLogs = options?.printApiLogs ?? false;
106
114
  const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;
107
115
  const runName = options?.runName ?? `run-${Date.now()}`;
@@ -116,7 +124,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
116
124
  skipScenarioIds,
117
125
  reporter,
118
126
  api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,
119
- ui: { baseUrl: uiBaseUrl, headless },
127
+ ui: {
128
+ baseUrl: uiBaseUrl,
129
+ headless,
130
+ defaultTimeoutMs: uiTimeoutMs,
131
+ navigationTimeoutMs: uiNavigationTimeoutMs,
132
+ },
120
133
  defaults: {
121
134
  timeoutMs: options?.timeoutMs,
122
135
  retries: options?.retries,
@@ -180,6 +193,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
180
193
  parseHeadless(val) {
181
194
  return val === 'false' ? false : true;
182
195
  }
196
+ parseUiTimeoutMs(val) {
197
+ return Number(val);
198
+ }
199
+ parseUiNavigationTimeoutMs(val) {
200
+ return Number(val);
201
+ }
183
202
  parseTimeoutMs(val) {
184
203
  return Number(val);
185
204
  }
@@ -291,6 +310,26 @@ __decorate([
291
310
  __metadata("design:paramtypes", [String]),
292
311
  __metadata("design:returntype", Boolean)
293
312
  ], TestRunCommand.prototype, "parseHeadless", null);
313
+ __decorate([
314
+ (0, nest_commander_1.Option)({
315
+ flags: '--ui-timeout-ms [number]',
316
+ description: 'Default timeout in ms for UI steps (waits, clicks, fills). Defaults to process.env.UI_TIMEOUT_MS, then the uiTestDefaultTimeoutMs setting, then 30000.',
317
+ required: false,
318
+ }),
319
+ __metadata("design:type", Function),
320
+ __metadata("design:paramtypes", [String]),
321
+ __metadata("design:returntype", Number)
322
+ ], TestRunCommand.prototype, "parseUiTimeoutMs", null);
323
+ __decorate([
324
+ (0, nest_commander_1.Option)({
325
+ flags: '--ui-navigation-timeout-ms [number]',
326
+ description: 'Default timeout in ms for ui.goto navigation. Defaults to process.env.UI_NAVIGATION_TIMEOUT_MS, then the uiTestNavigationTimeoutMs setting, then --ui-timeout-ms.',
327
+ required: false,
328
+ }),
329
+ __metadata("design:type", Function),
330
+ __metadata("design:paramtypes", [String]),
331
+ __metadata("design:returntype", Number)
332
+ ], TestRunCommand.prototype, "parseUiNavigationTimeoutMs", null);
294
333
  __decorate([
295
334
  (0, nest_commander_1.Option)({
296
335
  flags: '--timeout-ms [number]',
@@ -326,7 +365,8 @@ exports.TestRunCommand = TestRunCommand = TestRunCommand_1 = __decorate([
326
365
  name: 'run',
327
366
  description: 'Run testing scenarios from module metadata.',
328
367
  }),
329
- __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService])
368
+ __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService,
369
+ setting_service_1.SettingService])
330
370
  ], TestRunCommand);
331
371
  function splitCsv(value) {
332
372
  if (!value)
@@ -337,6 +377,12 @@ function splitCsv(value) {
337
377
  .filter(Boolean);
338
378
  return items.length ? items : undefined;
339
379
  }
380
+ function toPositiveNumber(value) {
381
+ if (value === null || value === undefined || value === '')
382
+ return undefined;
383
+ const parsed = Number(value);
384
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
385
+ }
340
386
  function resolveSpecPath(entry, metadataPath) {
341
387
  if (path.isAbsolute(entry)) {
342
388
  return entry;
@@ -1 +1 @@
1
- {"version":3,"file":"run-tests.command.js","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { SubCommand, CommandRunner, Option } from 'nest-commander';\nimport * as path from 'path';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ConsoleReporter } from 'src/testing/reporter/console-reporter';\nimport { WebhookReporter } from 'src/testing/reporter/webhook-reporter';\nimport { runFromMetadata } from 'src/testing/runner/run-from-metadata';\nimport type { TestingMetadata } from 'src/testing/contracts/testing-metadata.types';\nimport { SpecRegistry } from 'src/testing/core/spec-registry';\n\ninterface TestRunCommandOptions {\n module?: string;\n moduleName?: string;\n scenarioIds?: string;\n includeTags?: string;\n skipScenarioIds?: string;\n reporter?: string;\n apiBaseUrl?: string;\n uiBaseUrl?: string;\n headless?: boolean;\n timeoutMs?: number;\n retries?: number;\n listSpecs?: boolean;\n printApiLogs?: boolean;\n runName?: string;\n}\n\n@SubCommand({\n name: 'run',\n description: 'Run testing scenarios from module metadata.',\n})\nexport class TestRunCommand extends CommandRunner {\n private readonly logger = new Logger(TestRunCommand.name);\n\n constructor(\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: TestRunCommandOptions): Promise<void> {\n try {\n const moduleName = options?.moduleName ?? options?.module ?? passedParam?.[0];\n if (!moduleName) {\n this.logger.error('Module name is required. Use --module or pass it as the first argument.');\n return;\n }\n\n const metadataPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n if (!metadataPath) {\n this.logger.error(`Unable to resolve metadata path for module: ${moduleName}`);\n return;\n }\n\n const metadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(metadataPath);\n if (!metadata?.testing) {\n this.logger.error(`No testing configuration found in metadata: ${metadataPath}`);\n return;\n }\n\n const listSpecs = options?.listSpecs ?? false;\n const specEntries = Array.isArray(metadata.testing?.specs)\n ? metadata.testing.specs\n : [];\n\n if (listSpecs) {\n const registry = new SpecRegistry();\n if (specEntries.length) {\n loadSpecRegistrations(specEntries, metadataPath, registry);\n }\n printSpecList(registry.list());\n return;\n }\n if (!metadata?.testing?.scenarios || !Array.isArray(metadata.testing.scenarios)) {\n this.logger.error(`No testing.scenarios found in metadata: ${metadataPath}`);\n return;\n }\n\n const scenarioIds = splitCsv(options?.scenarioIds);\n const includeTags = splitCsv(options?.includeTags);\n const skipScenarioIds = splitCsv(options?.skipScenarioIds);\n\n const reporterName = options?.reporter ?? 'console';\n if (reporterName !== 'console') {\n this.logger.error(`Unsupported reporter: ${reporterName}. Use \"console\".`);\n return;\n }\n\n const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;\n const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;\n const headless = options?.headless ?? true;\n const printApiLogs = options?.printApiLogs ?? false;\n\n const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;\n const runName = options?.runName ?? `run-${Date.now()}`;\n const reporter = webhookUrl\n ? new WebhookReporter(webhookUrl, runName)\n : new ConsoleReporter();\n\n try {\n await runFromMetadata({\n metadata: metadata as TestingMetadata,\n scenarioIds,\n includeTags,\n skipScenarioIds,\n reporter,\n api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,\n ui: { baseUrl: uiBaseUrl, headless },\n defaults: {\n timeoutMs: options?.timeoutMs,\n retries: options?.retries,\n },\n options: { printApiLogs },\n specs: specEntries.length\n ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)\n : undefined,\n });\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n } finally {\n if (reporter instanceof WebhookReporter) {\n await reporter.flush(Number(process.exitCode ?? 0));\n }\n }\n return;\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n return;\n }\n }\n\n @Option({\n flags: '-m, --module [module name]',\n description: 'Module name to load metadata from.',\n required: false,\n })\n parseModule(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to run.',\n required: false,\n })\n parseScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--include-tags [tags]',\n description: 'Comma-separated list of tags; scenario must include all.',\n required: false,\n })\n parseIncludeTags(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--skip-scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to skip.',\n required: false,\n })\n parseSkipScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--reporter [name]',\n description: 'Reporter name (currently only \"console\").',\n required: false,\n })\n parseReporter(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--list-specs [true|false]',\n description: 'List registered test specs and exit.',\n required: false,\n })\n parseListSpecs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--print-api-logs [true|false]',\n description: 'Print full API request/response logs for api.request steps.',\n required: false,\n })\n parsePrintApiLogs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--api-base-url [url]',\n description: 'API base URL (defaults to process.env.BASE_URL).',\n required: false,\n })\n parseApiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--ui-base-url [url]',\n description: 'UI base URL (defaults to process.env.FRONTEND_BASE_URL).',\n required: false,\n })\n parseUiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--headless [true|false]',\n description: 'Run UI browser in headless mode (default: true).',\n required: false,\n })\n parseHeadless(val: string): boolean {\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--timeout-ms [number]',\n description: 'Default scenario timeout in milliseconds.',\n required: false,\n })\n parseTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--retries [number]',\n description: 'Default scenario retries.',\n required: false,\n })\n parseRetries(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--run-name [name]',\n description: 'Logical name for this test run (used by webhook reporter).',\n required: false,\n })\n parseRunName(val: string): string {\n return val;\n }\n}\n\nfunction splitCsv(value?: string): string[] | undefined {\n if (!value) return undefined;\n const items = value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n return items.length ? items : undefined;\n}\n\nfunction resolveSpecPath(entry: string, metadataPath: string): string {\n if (path.isAbsolute(entry)) {\n return entry;\n }\n if (entry.startsWith('.')) {\n return path.resolve(path.dirname(metadataPath), entry);\n }\n return path.resolve(process.cwd(), entry);\n}\n\nfunction loadSpecRegistrations(entries: string[], metadataPath: string, registry: SpecRegistry): void {\n for (const entry of entries) {\n const resolved = resolveSpecPath(entry, metadataPath);\n let mod: any;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n mod = require(resolved);\n } catch (err: any) {\n const message = err?.message ?? String(err);\n throw new Error(\n `Failed to load test spec module \"${entry}\" resolved to \"${resolved}\": ${message}`,\n );\n }\n const register = mod?.registerTestSpecs ?? mod?.default ?? mod;\n if (typeof register !== 'function') {\n throw new Error(\n `Test spec module \"${entry}\" did not export a register function (expected \"registerTestSpecs\" or default export).`,\n );\n }\n register(registry);\n }\n}\nfunction printSpecList(specIds: string[]): void {\n if (!specIds.length) {\n console.log('No test specs registered.');\n return;\n }\n console.log('Registered test specs:');\n for (const id of specIds) {\n console.log(`- ${id}`);\n }\n}\n"]}
1
+ {"version":3,"file":"run-tests.command.js","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { SubCommand, CommandRunner, Option } from 'nest-commander';\nimport * as path from 'path';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ConsoleReporter } from 'src/testing/reporter/console-reporter';\nimport { WebhookReporter } from 'src/testing/reporter/webhook-reporter';\nimport { runFromMetadata } from 'src/testing/runner/run-from-metadata';\nimport type { TestingMetadata } from 'src/testing/contracts/testing-metadata.types';\nimport { SpecRegistry } from 'src/testing/core/spec-registry';\nimport { SettingService } from 'src/services/setting.service';\nimport type { SolidCoreSetting } from 'src/services/settings/default-settings-provider.service';\n\ninterface TestRunCommandOptions {\n module?: string;\n moduleName?: string;\n scenarioIds?: string;\n includeTags?: string;\n skipScenarioIds?: string;\n reporter?: string;\n apiBaseUrl?: string;\n uiBaseUrl?: string;\n headless?: boolean;\n uiTimeoutMs?: number;\n uiNavigationTimeoutMs?: number;\n timeoutMs?: number;\n retries?: number;\n listSpecs?: boolean;\n printApiLogs?: boolean;\n runName?: string;\n}\n\n@SubCommand({\n name: 'run',\n description: 'Run testing scenarios from module metadata.',\n})\nexport class TestRunCommand extends CommandRunner {\n private readonly logger = new Logger(TestRunCommand.name);\n\n constructor(\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n private readonly settingService: SettingService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: TestRunCommandOptions): Promise<void> {\n try {\n const moduleName = options?.moduleName ?? options?.module ?? passedParam?.[0];\n if (!moduleName) {\n this.logger.error('Module name is required. Use --module or pass it as the first argument.');\n return;\n }\n\n const metadataPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n if (!metadataPath) {\n this.logger.error(`Unable to resolve metadata path for module: ${moduleName}`);\n return;\n }\n\n const metadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(metadataPath);\n if (!metadata?.testing) {\n this.logger.error(`No testing configuration found in metadata: ${metadataPath}`);\n return;\n }\n\n const listSpecs = options?.listSpecs ?? false;\n const specEntries = Array.isArray(metadata.testing?.specs)\n ? metadata.testing.specs\n : [];\n\n if (listSpecs) {\n const registry = new SpecRegistry();\n if (specEntries.length) {\n loadSpecRegistrations(specEntries, metadataPath, registry);\n }\n printSpecList(registry.list());\n return;\n }\n if (!metadata?.testing?.scenarios || !Array.isArray(metadata.testing.scenarios)) {\n this.logger.error(`No testing.scenarios found in metadata: ${metadataPath}`);\n return;\n }\n\n const scenarioIds = splitCsv(options?.scenarioIds);\n const includeTags = splitCsv(options?.includeTags);\n const skipScenarioIds = splitCsv(options?.skipScenarioIds);\n\n const reporterName = options?.reporter ?? 'console';\n if (reporterName !== 'console') {\n this.logger.error(`Unsupported reporter: ${reporterName}. Use \"console\".`);\n return;\n }\n\n const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;\n const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;\n const headless = options?.headless ?? true;\n const uiTimeoutMs =\n options?.uiTimeoutMs\n ?? toPositiveNumber(process.env.UI_TIMEOUT_MS)\n ?? toPositiveNumber(this.settingService.getConfigValue<SolidCoreSetting>('uiTestDefaultTimeoutMs'));\n const uiNavigationTimeoutMs =\n options?.uiNavigationTimeoutMs\n ?? toPositiveNumber(process.env.UI_NAVIGATION_TIMEOUT_MS)\n ?? toPositiveNumber(this.settingService.getConfigValue<SolidCoreSetting>('uiTestNavigationTimeoutMs'));\n const printApiLogs = options?.printApiLogs ?? false;\n\n const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;\n const runName = options?.runName ?? `run-${Date.now()}`;\n const reporter = webhookUrl\n ? new WebhookReporter(webhookUrl, runName)\n : new ConsoleReporter();\n\n try {\n await runFromMetadata({\n metadata: metadata as TestingMetadata,\n scenarioIds,\n includeTags,\n skipScenarioIds,\n reporter,\n api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,\n ui: {\n baseUrl: uiBaseUrl,\n headless,\n defaultTimeoutMs: uiTimeoutMs,\n navigationTimeoutMs: uiNavigationTimeoutMs,\n },\n defaults: {\n timeoutMs: options?.timeoutMs,\n retries: options?.retries,\n },\n options: { printApiLogs },\n specs: specEntries.length\n ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)\n : undefined,\n });\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n } finally {\n if (reporter instanceof WebhookReporter) {\n await reporter.flush(Number(process.exitCode ?? 0));\n }\n }\n return;\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n return;\n }\n }\n\n @Option({\n flags: '-m, --module [module name]',\n description: 'Module name to load metadata from.',\n required: false,\n })\n parseModule(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to run.',\n required: false,\n })\n parseScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--include-tags [tags]',\n description: 'Comma-separated list of tags; scenario must include all.',\n required: false,\n })\n parseIncludeTags(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--skip-scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to skip.',\n required: false,\n })\n parseSkipScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--reporter [name]',\n description: 'Reporter name (currently only \"console\").',\n required: false,\n })\n parseReporter(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--list-specs [true|false]',\n description: 'List registered test specs and exit.',\n required: false,\n })\n parseListSpecs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--print-api-logs [true|false]',\n description: 'Print full API request/response logs for api.request steps.',\n required: false,\n })\n parsePrintApiLogs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--api-base-url [url]',\n description: 'API base URL (defaults to process.env.BASE_URL).',\n required: false,\n })\n parseApiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--ui-base-url [url]',\n description: 'UI base URL (defaults to process.env.FRONTEND_BASE_URL).',\n required: false,\n })\n parseUiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--headless [true|false]',\n description: 'Run UI browser in headless mode (default: true).',\n required: false,\n })\n parseHeadless(val: string): boolean {\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--ui-timeout-ms [number]',\n description:\n 'Default timeout in ms for UI steps (waits, clicks, fills). Defaults to process.env.UI_TIMEOUT_MS, then the uiTestDefaultTimeoutMs setting, then 30000.',\n required: false,\n })\n parseUiTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--ui-navigation-timeout-ms [number]',\n description:\n 'Default timeout in ms for ui.goto navigation. Defaults to process.env.UI_NAVIGATION_TIMEOUT_MS, then the uiTestNavigationTimeoutMs setting, then --ui-timeout-ms.',\n required: false,\n })\n parseUiNavigationTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--timeout-ms [number]',\n description: 'Default scenario timeout in milliseconds.',\n required: false,\n })\n parseTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--retries [number]',\n description: 'Default scenario retries.',\n required: false,\n })\n parseRetries(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--run-name [name]',\n description: 'Logical name for this test run (used by webhook reporter).',\n required: false,\n })\n parseRunName(val: string): string {\n return val;\n }\n}\n\nfunction splitCsv(value?: string): string[] | undefined {\n if (!value) return undefined;\n const items = value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n return items.length ? items : undefined;\n}\n\n// Accepts unknown because settings come back already parsed as numbers, while env\n// vars arrive as strings.\nfunction toPositiveNumber(value?: unknown): number | undefined {\n if (value === null || value === undefined || value === '') return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction resolveSpecPath(entry: string, metadataPath: string): string {\n if (path.isAbsolute(entry)) {\n return entry;\n }\n if (entry.startsWith('.')) {\n return path.resolve(path.dirname(metadataPath), entry);\n }\n return path.resolve(process.cwd(), entry);\n}\n\nfunction loadSpecRegistrations(entries: string[], metadataPath: string, registry: SpecRegistry): void {\n for (const entry of entries) {\n const resolved = resolveSpecPath(entry, metadataPath);\n let mod: any;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n mod = require(resolved);\n } catch (err: any) {\n const message = err?.message ?? String(err);\n throw new Error(\n `Failed to load test spec module \"${entry}\" resolved to \"${resolved}\": ${message}`,\n );\n }\n const register = mod?.registerTestSpecs ?? mod?.default ?? mod;\n if (typeof register !== 'function') {\n throw new Error(\n `Test spec module \"${entry}\" did not export a register function (expected \"registerTestSpecs\" or default export).`,\n );\n }\n register(registry);\n }\n}\nfunction printSpecList(specIds: string[]): void {\n if (!specIds.length) {\n console.log('No test specs registered.');\n return;\n }\n console.log('Registered test specs:');\n for (const id of specIds) {\n console.log(`- ${id}`);\n }\n}\n"]}
@@ -4,6 +4,7 @@ interface SeedCommandOptions {
4
4
  seeder?: string;
5
5
  modulesToSeed?: string;
6
6
  prune?: boolean;
7
+ skipHooks?: boolean;
7
8
  }
8
9
  export declare class SeedCommand extends CommandRunner {
9
10
  private readonly solidRegistry;
@@ -13,6 +14,7 @@ export declare class SeedCommand extends CommandRunner {
13
14
  parseModulesToSeed(val: string): string;
14
15
  parseString(val: string): string;
15
16
  parsePrune(): boolean;
17
+ parseSkipHooks(): boolean;
16
18
  }
17
19
  export {};
18
20
  //# sourceMappingURL=seed.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBACa,WAAY,SAAQ,aAAa;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE1B,aAAa,EAAE,aAAa;IAInD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C7E,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKvC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKhC,UAAU,IAAI,OAAO;CAGtB"}
1
+ {"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBACa,WAAY,SAAQ,aAAa;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE1B,aAAa,EAAE,aAAa;IAInD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD7E,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKvC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKhC,UAAU,IAAI,OAAO;IAKrB,cAAc,IAAI,OAAO;CAG1B"}
@@ -31,6 +31,7 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
31
31
  modulesToSeed,
32
32
  pruneMetadata: false,
33
33
  seedGlobalMetadata: true,
34
+ skipHooks: false,
34
35
  };
35
36
  this.logger.log(`Modules to seed: ${modulesToSeed.join(', ')}`);
36
37
  }
@@ -42,9 +43,20 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
42
43
  modulesToSeed: null,
43
44
  pruneMetadata: false,
44
45
  seedGlobalMetadata: true,
46
+ skipHooks: false,
45
47
  };
46
48
  parsedConf.pruneMetadata = true;
47
49
  }
50
+ if (options?.skipHooks) {
51
+ parsedConf = parsedConf ?? {
52
+ modulesToSeed: null,
53
+ pruneMetadata: false,
54
+ seedGlobalMetadata: true,
55
+ skipHooks: false,
56
+ };
57
+ parsedConf.skipHooks = true;
58
+ this.logger.log('Skipping pre-seed and post-seed hooks.');
59
+ }
48
60
  const seeder = this.solidRegistry
49
61
  .getSeeders()
50
62
  .filter((seeder) => seeder.name === options.seeder)
@@ -66,6 +78,9 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
66
78
  parsePrune() {
67
79
  return true;
68
80
  }
81
+ parseSkipHooks() {
82
+ return true;
83
+ }
69
84
  };
70
85
  exports.SeedCommand = SeedCommand;
71
86
  __decorate([
@@ -86,6 +101,12 @@ __decorate([
86
101
  __metadata("design:paramtypes", []),
87
102
  __metadata("design:returntype", Boolean)
88
103
  ], SeedCommand.prototype, "parsePrune", null);
104
+ __decorate([
105
+ (0, nest_commander_1.Option)({ flags: '--skip-hooks', description: 'Skip emitting pre-seed and post-seed lifecycle hooks/events.' }),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", []),
108
+ __metadata("design:returntype", Boolean)
109
+ ], SeedCommand.prototype, "parseSkipHooks", null);
89
110
  exports.SeedCommand = SeedCommand = SeedCommand_1 = __decorate([
90
111
  (0, nest_commander_1.Command)({ name: 'seed', description: 'Install seed data for a given module' }),
91
112
  __metadata("design:paramtypes", [solid_registry_1.SolidRegistry])
@@ -1 +1 @@
1
- {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ModuleMetadataSeederOptions } from 'src/interfaces';\n\ninterface SeedCommandOptions {\n seeder?: string;\n modulesToSeed?: string;\n prune?: boolean;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n let parsedConf: ModuleMetadataSeederOptions | null = null;\n if (options?.modulesToSeed) {\n const modulesToSeed = options.modulesToSeed\n .split(',')\n .map((m) => m.trim())\n .filter(Boolean);\n parsedConf = {\n modulesToSeed,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n };\n this.logger.log(`Modules to seed: ${modulesToSeed.join(', ')}`);\n } else {\n this.logger.log('No --modules-to-seed flag provided. Running with default seeder behavior.');\n }\n\n if (options?.prune) {\n parsedConf = parsedConf ?? {\n modulesToSeed: null,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n };\n parsedConf.pruneMetadata = true;\n }\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder: ${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n /**\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n @Option({ flags: '-m, --modules-to-seed [module names]', description: 'Comma-separated list of module names to seed.', required: false })\n parseModulesToSeed(val: string): string {\n return val;\n }\n\n @Option({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' })\n parseString(val: string): string {\n return val;\n }\n\n @Option({ flags: '--prune', description: 'Prune metadata not present in JSON.' })\n parsePrune(): boolean {\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ModuleMetadataSeederOptions } from 'src/interfaces';\n\ninterface SeedCommandOptions {\n seeder?: string;\n modulesToSeed?: string;\n prune?: boolean;\n skipHooks?: boolean;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n let parsedConf: ModuleMetadataSeederOptions | null = null;\n if (options?.modulesToSeed) {\n const modulesToSeed = options.modulesToSeed\n .split(',')\n .map((m) => m.trim())\n .filter(Boolean);\n parsedConf = {\n modulesToSeed,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n skipHooks: false,\n };\n this.logger.log(`Modules to seed: ${modulesToSeed.join(', ')}`);\n } else {\n this.logger.log('No --modules-to-seed flag provided. Running with default seeder behavior.');\n }\n\n if (options?.prune) {\n parsedConf = parsedConf ?? {\n modulesToSeed: null,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n skipHooks: false,\n };\n parsedConf.pruneMetadata = true;\n }\n\n if (options?.skipHooks) {\n parsedConf = parsedConf ?? {\n modulesToSeed: null,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n skipHooks: false,\n };\n parsedConf.skipHooks = true;\n this.logger.log('Skipping pre-seed and post-seed hooks.');\n }\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder: ${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n /**\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n @Option({ flags: '-m, --modules-to-seed [module names]', description: 'Comma-separated list of module names to seed.', required: false })\n parseModulesToSeed(val: string): string {\n return val;\n }\n\n @Option({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' })\n parseString(val: string): string {\n return val;\n }\n\n @Option({ flags: '--prune', description: 'Prune metadata not present in JSON.' })\n parsePrune(): boolean {\n return true;\n }\n\n @Option({ flags: '--skip-hooks', description: 'Skip emitting pre-seed and post-seed lifecycle hooks/events.' })\n parseSkipHooks(): boolean {\n return true;\n }\n}\n"]}
@@ -14,4 +14,5 @@ export declare const CHATTER_MESSAGE_STATUS: {
14
14
  readonly PENDING: "pending";
15
15
  readonly COMPLETED: "completed";
16
16
  };
17
+ export declare const CHATTER_MESSAGE_USER_FIELDS: readonly ["id", "fullName"];
17
18
  //# sourceMappingURL=chatter-message.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.constants.d.ts","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC"}
1
+ {"version":3,"file":"chatter-message.constants.d.ts","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAUX,eAAO,MAAM,2BAA2B,6BAAsB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CHATTER_MESSAGE_STATUS = exports.CHATTER_MESSAGE_SUBTYPE = exports.CHATTER_MESSAGE_TYPE = void 0;
3
+ exports.CHATTER_MESSAGE_USER_FIELDS = exports.CHATTER_MESSAGE_STATUS = exports.CHATTER_MESSAGE_SUBTYPE = exports.CHATTER_MESSAGE_TYPE = void 0;
4
+ const user_constants_1 = require("./user.constants");
4
5
  exports.CHATTER_MESSAGE_TYPE = {
5
6
  AUDIT: 'audit',
6
7
  CUSTOM: 'custom',
@@ -17,4 +18,5 @@ exports.CHATTER_MESSAGE_STATUS = {
17
18
  PENDING: 'pending',
18
19
  COMPLETED: 'completed',
19
20
  };
21
+ exports.CHATTER_MESSAGE_USER_FIELDS = user_constants_1.USER_SUMMARY_FIELDS;
20
22
  //# sourceMappingURL=chatter-message.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.constants.js","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IAChC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,uBAAuB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACN,CAAC;AAEE,QAAA,sBAAsB,GAAG;IAClC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CAChB,CAAC","sourcesContent":["export const CHATTER_MESSAGE_TYPE = {\n AUDIT: 'audit',\n CUSTOM: 'custom',\n} as const;\n\nexport const CHATTER_MESSAGE_SUBTYPE = {\n AUDIT_INSERT: 'audit_insert',\n AUDIT_UPDATE: 'audit_update',\n AUDIT_DELETE: 'audit_delete',\n CUSTOM: 'custom',\n NOTE: 'note',\n TASK: 'task',\n} as const;\n\nexport const CHATTER_MESSAGE_STATUS = {\n PENDING: 'pending',\n COMPLETED: 'completed',\n} as const;\n"]}
1
+ {"version":3,"file":"chatter-message.constants.js","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":";;;AAAA,qDAAmE;AAEtD,QAAA,oBAAoB,GAAG;IAChC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,uBAAuB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACN,CAAC;AAEE,QAAA,sBAAsB,GAAG;IAClC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CAChB,CAAC;AAUE,QAAA,2BAA2B,GAAG,oCAAmB,CAAC","sourcesContent":["import { USER_SUMMARY_FIELDS } from 'src/constants/user.constants';\n\nexport const CHATTER_MESSAGE_TYPE = {\n AUDIT: 'audit',\n CUSTOM: 'custom',\n} as const;\n\nexport const CHATTER_MESSAGE_SUBTYPE = {\n AUDIT_INSERT: 'audit_insert',\n AUDIT_UPDATE: 'audit_update',\n AUDIT_DELETE: 'audit_delete',\n CUSTOM: 'custom',\n NOTE: 'note',\n TASK: 'task',\n} as const;\n\nexport const CHATTER_MESSAGE_STATUS = {\n PENDING: 'pending',\n COMPLETED: 'completed',\n} as const;\n\n/**\n * Columns of the message author exposed by the chatter APIs.\n *\n * The chatter panel renders `fullName` (name label + initials avatar) and uses `id`\n * for the own-note edit check; the admin list/form/tree views display `fullName` via\n * each view's `coModelFieldToDisplay`. That is exactly the platform-wide summary\n * shape, so this is an alias rather than a second list to keep in step.\n */\nexport const CHATTER_MESSAGE_USER_FIELDS = USER_SUMMARY_FIELDS;\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const DRAFT_PUBLISH_VERSIONING_FIELD_NAMES: readonly ["isPublished", "isLatest", "initialEntityVersionId", "publishedTracker"];
2
+ //# sourceMappingURL=draft-publish-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-publish-fields.d.ts","sourceRoot":"","sources":["../../src/constants/draft-publish-fields.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oCAAoC,oFAAqF,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DRAFT_PUBLISH_VERSIONING_FIELD_NAMES = void 0;
4
+ exports.DRAFT_PUBLISH_VERSIONING_FIELD_NAMES = ['isPublished', 'isLatest', 'initialEntityVersionId', 'publishedTracker'];
5
+ //# sourceMappingURL=draft-publish-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-publish-fields.js","sourceRoot":"","sources":["../../src/constants/draft-publish-fields.ts"],"names":[],"mappings":";;;AAIa,QAAA,oCAAoC,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,wBAAwB,EAAE,kBAAkB,CAAU,CAAC","sourcesContent":["// The versioning columns CommonEntity adds for draft/publish support. These don't exist on\n// legacy tables (see LegacyCommonEntityWithExistingId) and don't carry over when a new draft\n// version is copied from its source entity, so both of those call sites share this list rather\n// than each hand-enumerating the same four names.\nexport const DRAFT_PUBLISH_VERSIONING_FIELD_NAMES = ['isPublished', 'isLatest', 'initialEntityVersionId', 'publishedTracker'] as const;\n"]}
@@ -1,5 +1,14 @@
1
1
  export type MediaCategory = 'image' | 'audio' | 'video' | 'file' | 'pdf';
2
2
  export declare const DANGEROUS_EXTENSIONS: Set<string>;
3
+ export declare const DANGEROUS_MIME_TYPES: Set<string>;
4
+ export declare function getLowercaseFileExtension(fileName?: string | null): string | undefined;
5
+ export interface UploadedFileLike {
6
+ mimetype?: string;
7
+ originalname?: string;
8
+ filename?: string;
9
+ }
10
+ export declare function getUploadedFileName(file?: UploadedFileLike | null): string;
11
+ export declare function isDangerousMediaFile(file?: UploadedFileLike | null): boolean;
3
12
  export declare const EXT_TO_MEDIA_TYPE: Record<string, MediaCategory>;
4
13
  export declare const INLINE_SAFE_EXTENSIONS: Set<string>;
5
14
  //# sourceMappingURL=media-file-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-file-types.d.ts","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAazE,eAAO,MAAM,oBAAoB,aAI/B,CAAC;AASH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAM3D,CAAC;AAMF,eAAO,MAAM,sBAAsB,aAKjC,CAAC"}
1
+ {"version":3,"file":"media-file-types.d.ts","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAazE,eAAO,MAAM,oBAAoB,aAI/B,CAAC;AAQH,eAAO,MAAM,oBAAoB,aAE/B,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAWtF;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,MAAM,CAE1E;AAQD,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAO5E;AASD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAM3D,CAAC;AAMF,eAAO,MAAM,sBAAsB,aAKjC,CAAC"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INLINE_SAFE_EXTENSIONS = exports.EXT_TO_MEDIA_TYPE = exports.DANGEROUS_EXTENSIONS = void 0;
3
+ exports.INLINE_SAFE_EXTENSIONS = exports.EXT_TO_MEDIA_TYPE = exports.DANGEROUS_MIME_TYPES = exports.DANGEROUS_EXTENSIONS = void 0;
4
+ exports.getLowercaseFileExtension = getLowercaseFileExtension;
5
+ exports.getUploadedFileName = getUploadedFileName;
6
+ exports.isDangerousMediaFile = isDangerousMediaFile;
4
7
  const IMAGE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'bmp', 'tiff', 'heic', 'heif'];
5
8
  const AUDIO_EXTENSIONS = ['mp3', 'wav', 'ogg', 'aac', 'm4a', 'flac', 'webm'];
6
9
  const VIDEO_EXTENSIONS = ['mp4', 'mov', 'avi', 'mkv', 'mpeg', 'mpg', '3gp', '3g2', 'webm', 'ogg'];
@@ -11,6 +14,29 @@ exports.DANGEROUS_EXTENSIONS = new Set([
11
14
  'js', 'mjs', 'php', 'phtml', 'jsp', 'asp', 'aspx',
12
15
  'exe', 'sh', 'bat', 'cmd', 'ps1', 'jar', 'dll',
13
16
  ]);
17
+ exports.DANGEROUS_MIME_TYPES = new Set([
18
+ 'image/svg+xml', 'text/html', 'application/xhtml+xml',
19
+ ]);
20
+ function getLowercaseFileExtension(fileName) {
21
+ if (!fileName) {
22
+ return undefined;
23
+ }
24
+ const lastDotIndex = fileName.lastIndexOf('.');
25
+ if (lastDotIndex < 0 || lastDotIndex === fileName.length - 1) {
26
+ return undefined;
27
+ }
28
+ return fileName.slice(lastDotIndex + 1).toLowerCase();
29
+ }
30
+ function getUploadedFileName(file) {
31
+ return file?.originalname ?? file?.filename ?? '';
32
+ }
33
+ function isDangerousMediaFile(file) {
34
+ const ext = getLowercaseFileExtension(getUploadedFileName(file));
35
+ if (ext && exports.DANGEROUS_EXTENSIONS.has(ext)) {
36
+ return true;
37
+ }
38
+ return exports.DANGEROUS_MIME_TYPES.has((file?.mimetype || '').toLowerCase().trim());
39
+ }
14
40
  exports.EXT_TO_MEDIA_TYPE = {
15
41
  ...Object.fromEntries(IMAGE_EXTENSIONS.map((ext) => [ext, 'image'])),
16
42
  ...Object.fromEntries(AUDIO_EXTENSIONS.map((ext) => [ext, 'audio'])),
@@ -1 +1 @@
1
- {"version":3,"file":"media-file-types.js","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":";;;AAEA,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9F,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7E,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAClG,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1H,MAAM,aAAa,GAAG,KAAK,CAAC;AAOf,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IACpC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IACjD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CACjD,CAAC,CAAC;AASU,QAAA,iBAAiB,GAAkC;IAC5D,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAgB,CAAC,CAAC,CAAC;IAC7E,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAgB,CAAC,CAAC,CAAC;IAC7E,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAgB,CAAC,CAAC,CAAC;IAC7E,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAe,CAAC,CAAC,CAAC;IAC/E,CAAC,aAAa,CAAC,EAAE,KAAK;CACzB,CAAC;AAMW,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAS;IAClD,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,aAAa;CAChB,CAAC,CAAC","sourcesContent":["export type MediaCategory = 'image' | 'audio' | 'video' | 'file' | 'pdf';\n\nconst IMAGE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'bmp', 'tiff', 'heic', 'heif'];\nconst AUDIO_EXTENSIONS = ['mp3', 'wav', 'ogg', 'aac', 'm4a', 'flac', 'webm'];\nconst VIDEO_EXTENSIONS = ['mp4', 'mov', 'avi', 'mkv', 'mpeg', 'mpg', '3gp', '3g2', 'webm', 'ogg'];\nconst DOCUMENT_EXTENSIONS = ['txt', 'md', 'csv', 'json', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'zip', 'rar', '7z'];\nconst PDF_EXTENSION = 'pdf';\n\n/**\n * Extensions that must never be accepted as media uploads, regardless of declared mimetype or\n * admin-configured mediaTypes allowlist. Checked before any other resolution so a spoofed\n * Content-Type (e.g. application/octet-stream on an .html file) can't bypass this.\n */\nexport const DANGEROUS_EXTENSIONS = new Set([\n 'html', 'htm', 'xhtml', 'svg', 'xml',\n 'js', 'mjs', 'php', 'phtml', 'jsp', 'asp', 'aspx',\n 'exe', 'sh', 'bat', 'cmd', 'ps1', 'jar', 'dll',\n]);\n\n/**\n * Single source of truth for extension -> coarse media category. Shared by upload-time\n * validation (MediaFieldCrudManager) and serve-time header hardening (ServeStaticModule), so\n * both agree on which extensions belong to which category and neither drifts out of sync.\n * webm/ogg are shared between AUDIO_EXTENSIONS and VIDEO_EXTENSIONS - last one wins here, they\n * default to 'video' since that's the more common upload case.\n */\nexport const EXT_TO_MEDIA_TYPE: Record<string, MediaCategory> = {\n ...Object.fromEntries(IMAGE_EXTENSIONS.map((ext) => [ext, 'image' as const])),\n ...Object.fromEntries(AUDIO_EXTENSIONS.map((ext) => [ext, 'audio' as const])),\n ...Object.fromEntries(VIDEO_EXTENSIONS.map((ext) => [ext, 'video' as const])),\n ...Object.fromEntries(DOCUMENT_EXTENSIONS.map((ext) => [ext, 'file' as const])),\n [PDF_EXTENSION]: 'pdf',\n};\n\n/**\n * Extensions safe to serve inline with their natural Content-Type; everything else served from\n * media-files-storage is forced to application/octet-stream + Content-Disposition: attachment.\n */\nexport const INLINE_SAFE_EXTENSIONS = new Set<string>([\n ...IMAGE_EXTENSIONS,\n ...AUDIO_EXTENSIONS,\n ...VIDEO_EXTENSIONS,\n PDF_EXTENSION,\n]);\n"]}
1
+ {"version":3,"file":"media-file-types.js","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":"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","sourcesContent":["export type MediaCategory = 'image' | 'audio' | 'video' | 'file' | 'pdf';\n\nconst IMAGE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'bmp', 'tiff', 'heic', 'heif'];\nconst AUDIO_EXTENSIONS = ['mp3', 'wav', 'ogg', 'aac', 'm4a', 'flac', 'webm'];\nconst VIDEO_EXTENSIONS = ['mp4', 'mov', 'avi', 'mkv', 'mpeg', 'mpg', '3gp', '3g2', 'webm', 'ogg'];\nconst DOCUMENT_EXTENSIONS = ['txt', 'md', 'csv', 'json', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'zip', 'rar', '7z'];\nconst PDF_EXTENSION = 'pdf';\n\n/**\n * Extensions that must never be accepted as media uploads, regardless of declared mimetype or\n * admin-configured mediaTypes allowlist. Checked before any other resolution so a spoofed\n * Content-Type (e.g. application/octet-stream on an .html file) can't bypass this.\n */\nexport const DANGEROUS_EXTENSIONS = new Set([\n 'html', 'htm', 'xhtml', 'svg', 'xml',\n 'js', 'mjs', 'php', 'phtml', 'jsp', 'asp', 'aspx',\n 'exe', 'sh', 'bat', 'cmd', 'ps1', 'jar', 'dll',\n]);\n\n\n/**\n * Mimetypes that are never safe to accept, regardless of extension. These render as active\n * content in a browser (svg can carry <script>), so they are rejected even when the filename\n * looks harmless. Kept alongside DANGEROUS_EXTENSIONS so upload paths check both.\n */\nexport const DANGEROUS_MIME_TYPES = new Set([\n 'image/svg+xml', 'text/html', 'application/xhtml+xml',\n]);\n\nexport function getLowercaseFileExtension(fileName?: string | null): string | undefined {\n if (!fileName) {\n return undefined;\n }\n\n const lastDotIndex = fileName.lastIndexOf('.');\n if (lastDotIndex < 0 || lastDotIndex === fileName.length - 1) {\n return undefined;\n }\n\n return fileName.slice(lastDotIndex + 1).toLowerCase();\n}\n\n/** Minimal shape of an uploaded file, so this module stays free of framework imports. */\nexport interface UploadedFileLike {\n mimetype?: string;\n originalname?: string;\n filename?: string;\n}\n\n/** originalname is the client-supplied name; filename is multer's on-disk name. */\nexport function getUploadedFileName(file?: UploadedFileLike | null): string {\n return file?.originalname ?? file?.filename ?? '';\n}\n\n/**\n * Single predicate for \"must never be stored\". Shared by every upload entry point\n * (MediaFieldCrudManager, chatter attachments) so the rules can't drift between them.\n * Extension is checked before mimetype so a spoofed Content-Type (e.g.\n * application/octet-stream on an .html file) can't bypass it.\n */\nexport function isDangerousMediaFile(file?: UploadedFileLike | null): boolean {\n const ext = getLowercaseFileExtension(getUploadedFileName(file));\n if (ext && DANGEROUS_EXTENSIONS.has(ext)) {\n return true;\n }\n\n return DANGEROUS_MIME_TYPES.has((file?.mimetype || '').toLowerCase().trim());\n}\n\n/**\n * Single source of truth for extension -> coarse media category. Shared by upload-time\n * validation (MediaFieldCrudManager) and serve-time header hardening (ServeStaticModule), so\n * both agree on which extensions belong to which category and neither drifts out of sync.\n * webm/ogg are shared between AUDIO_EXTENSIONS and VIDEO_EXTENSIONS - last one wins here, they\n * default to 'video' since that's the more common upload case.\n */\nexport const EXT_TO_MEDIA_TYPE: Record<string, MediaCategory> = {\n ...Object.fromEntries(IMAGE_EXTENSIONS.map((ext) => [ext, 'image' as const])),\n ...Object.fromEntries(AUDIO_EXTENSIONS.map((ext) => [ext, 'audio' as const])),\n ...Object.fromEntries(VIDEO_EXTENSIONS.map((ext) => [ext, 'video' as const])),\n ...Object.fromEntries(DOCUMENT_EXTENSIONS.map((ext) => [ext, 'file' as const])),\n [PDF_EXTENSION]: 'pdf',\n};\n\n/**\n * Extensions safe to serve inline with their natural Content-Type; everything else served from\n * media-files-storage is forced to application/octet-stream + Content-Disposition: attachment.\n */\nexport const INLINE_SAFE_EXTENSIONS = new Set<string>([\n ...IMAGE_EXTENSIONS,\n ...AUDIO_EXTENSIONS,\n ...VIDEO_EXTENSIONS,\n PDF_EXTENSION,\n]);\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const USER_SUMMARY_FIELDS: readonly ["id", "fullName"];
2
+ //# sourceMappingURL=user.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.constants.d.ts","sourceRoot":"","sources":["../../src/constants/user.constants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,mBAAmB,6BAA8B,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USER_SUMMARY_FIELDS = void 0;
4
+ exports.USER_SUMMARY_FIELDS = ['id', 'fullName'];
5
+ //# sourceMappingURL=user.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.constants.js","sourceRoot":"","sources":["../../src/constants/user.constants.ts"],"names":[],"mappings":";;;AAYa,QAAA,mBAAmB,GAAG,CAAC,IAAI,EAAE,UAAU,CAAU,CAAC","sourcesContent":["/**\n * The columns of a `User` that are safe to embed in another entity's API response.\n *\n * Whenever a user is attached to a record the caller asked for - a `createdBy` /\n * `updatedBy` populate, a chatter message author - the caller wants to display who it\n * was, not to read their profile. Everything else on `User` is PII (email, mobile),\n * authz metadata (roles, apiKeys) or secret, and the embedded user is frequently\n * someone the viewer has no other visibility of.\n *\n * `fullName` is nullable; consumers that need a fallback should use the record's own\n * context rather than widening this list.\n */\nexport const USER_SUMMARY_FIELDS = ['id', 'fullName'] as const;\n"]}
@@ -11,6 +11,6 @@ export declare class ActionMetadataController {
11
11
  findMany(query: any, solidRequestContext: SolidRequestContextDto): Promise<any>;
12
12
  findOne(id: string, query: any, solidRequestContext: SolidRequestContextDto): Promise<import("..").ActionMetadata>;
13
13
  deleteMany(ids: number[], solidRequestContext: SolidRequestContextDto): Promise<any>;
14
- delete(id: number, solidRequestContext: SolidRequestContextDto): Promise<import("..").ActionMetadata>;
14
+ delete(id: number, solidRequestContext: SolidRequestContextDto): Promise<import("..").ActionMetadata[]>;
15
15
  }
16
16
  //# sourceMappingURL=action-metadata.controller.d.ts.map
@@ -129,7 +129,7 @@ __decorate([
129
129
  __decorate([
130
130
  (0, swagger_1.ApiBearerAuth)("jwt"),
131
131
  (0, common_1.Delete)(':id'),
132
- openapi.ApiResponse({ status: 200, type: require("../entities/action-metadata.entity").ActionMetadata }),
132
+ openapi.ApiResponse({ status: 200, type: [require("../entities/action-metadata.entity").ActionMetadata] }),
133
133
  __param(0, (0, common_1.Param)('id')),
134
134
  __param(1, (0, solid_request_context_decorator_1.SolidRequestContextDecorator)()),
135
135
  __metadata("design:type", Function),
@@ -11,6 +11,6 @@ export declare class AgentEventController {
11
11
  findMany(query: any): Promise<any>;
12
12
  findOne(id: string, query: any): Promise<import("..").AgentEvent>;
13
13
  deleteMany(ids: number[]): Promise<any>;
14
- delete(id: number): Promise<import("..").AgentEvent>;
14
+ delete(id: number): Promise<import("..").AgentEvent[]>;
15
15
  }
16
16
  //# sourceMappingURL=agent-event.controller.d.ts.map
@@ -133,7 +133,7 @@ __decorate([
133
133
  __decorate([
134
134
  (0, swagger_1.ApiBearerAuth)('jwt'),
135
135
  (0, common_1.Delete)(':id'),
136
- openapi.ApiResponse({ status: 200, type: require("../entities/agent-event.entity").AgentEvent }),
136
+ openapi.ApiResponse({ status: 200, type: [require("../entities/agent-event.entity").AgentEvent] }),
137
137
  __param(0, (0, common_1.Param)('id')),
138
138
  __metadata("design:type", Function),
139
139
  __metadata("design:paramtypes", [Number]),
@@ -11,6 +11,6 @@ export declare class AgentSessionController {
11
11
  findMany(query: any): Promise<any>;
12
12
  findOne(id: string, query: any): Promise<import("..").AgentSession>;
13
13
  deleteMany(ids: number[]): Promise<any>;
14
- delete(id: number): Promise<import("..").AgentSession>;
14
+ delete(id: number): Promise<import("..").AgentSession[]>;
15
15
  }
16
16
  //# sourceMappingURL=agent-session.controller.d.ts.map
@@ -133,7 +133,7 @@ __decorate([
133
133
  __decorate([
134
134
  (0, swagger_1.ApiBearerAuth)('jwt'),
135
135
  (0, common_1.Delete)(':id'),
136
- openapi.ApiResponse({ status: 200, type: require("../entities/agent-session.entity").AgentSession }),
136
+ openapi.ApiResponse({ status: 200, type: [require("../entities/agent-session.entity").AgentSession] }),
137
137
  __param(0, (0, common_1.Param)('id')),
138
138
  __metadata("design:type", Function),
139
139
  __metadata("design:paramtypes", [Number]),
@@ -16,6 +16,11 @@ export declare class ChatterMessageController {
16
16
  records: import("..").ChatterMessage[];
17
17
  }>;
18
18
  findMany(query: any): Promise<any>;
19
+ getMentionableUsers(query: any): Promise<{
20
+ id: number;
21
+ username: string;
22
+ fullName: string;
23
+ }[]>;
19
24
  findOne(id: string, query: any): Promise<import("..").ChatterMessage>;
20
25
  postMessage(postDto: PostChatterMessageDto, files: Array<Express.Multer.File>): Promise<import("..").ChatterMessage>;
21
26
  markCompleted(id: string): Promise<import("..").ChatterMessage>;
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAUtF,qBAEa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAsDrD,kBAAkB,CACH,QAAQ,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAC9B,KAAK,EAAE,GAAG;;;;;;;;;;;IAgBf,QAAQ,CAAU,KAAK,EAAE,GAAG;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAmBpD,WAAW,CACP,OAAO,EAAE,qBAAqB,EACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO9C,aAAa,CAAc,EAAE,EAAE,MAAM;IAOrC,uBAAuB,CACd,EAAE,EAAE,MAAM,EACf,SAAS,EAAE,2BAA2B,EAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;CAIrD"}
1
+ {"version":3,"file":"chatter-message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAUtF,qBAEa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAsDrD,kBAAkB,CACH,QAAQ,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAC9B,KAAK,EAAE,GAAG;;;;;;;;;;;IAgBf,QAAQ,CAAU,KAAK,EAAE,GAAG;IAQ5B,mBAAmB,CAAU,KAAK,EAAE,GAAG;;;;;IAMvC,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAmBpD,WAAW,CACP,OAAO,EAAE,qBAAqB,EACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO9C,aAAa,CAAc,EAAE,EAAE,MAAM;IAOrC,uBAAuB,CACd,EAAE,EAAE,MAAM,EACf,SAAS,EAAE,2BAA2B,EAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;CAIrD"}