@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,13 +1,14 @@
1
- import { forwardRef, Inject, Injectable, Logger, NotFoundException } from '@nestjs/common';
1
+ import { BadRequestException, forwardRef, Inject, Injectable, Logger, NotFoundException } from '@nestjs/common';
2
2
  import { ModuleRef } from "@nestjs/core";
3
3
  import { InjectEntityManager } from '@nestjs/typeorm';
4
- import { EntityManager, In } from 'typeorm';
4
+ import { EntityManager, In, Not } from 'typeorm';
5
5
  import * as path from 'path';
6
6
  import { Readable } from 'stream';
7
7
 
8
8
  import { ConfigService } from '@nestjs/config';
9
9
  import { CRUDService } from 'src/services/crud.service';
10
10
  import { DiskFileService, S3FileService } from 'src/services/file';
11
+ import { classify } from 'src/helpers/string.helper';
11
12
  import { MediaDownloadUrlService } from 'src/services/media-download-url.service';
12
13
 
13
14
 
@@ -16,11 +17,12 @@ import { BasicFilterDto } from 'src/dtos/basic-filters.dto';
16
17
  import { MediaStorageProviderType } from 'src/dtos/create-media-storage-provider-metadata.dto';
17
18
  import { Media } from 'src/entities/media.entity';
18
19
  import { MediaStorageProviderMetadata } from 'src/entities/media-storage-provider-metadata.entity';
20
+ import { MediaFieldCrudManager, SolidMediaType } from 'src/helpers/field-crud-managers/MediaFieldCrudManager';
19
21
  import { FieldMetadataRepository } from 'src/repository/field-metadata.repository';
20
22
  import { MediaStorageProviderMetadataRepository } from 'src/repository/media-storage-provider-metadata.repository';
21
23
  import { MediaRepository } from 'src/repository/media.repository';
22
24
  import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
23
- import { buildDiskMediaPath, buildStoredMediaFileName, getEffectiveS3Region, resolveMediaIsPublic, } from 'src/services/media-storage.utils';
25
+ import { buildDiskMediaPath, getEffectiveS3Region, resolveMediaIsPublic, } from 'src/services/media-storage.utils';
24
26
  import { getMediaStorageProvider } from "./mediaStorageProviders";
25
27
 
26
28
  @Injectable()
@@ -103,40 +105,25 @@ export class MediaService extends CRUDService<Media> {
103
105
  throw new NotFoundException('Media storage provider metadata not found');
104
106
  }
105
107
 
106
- const savedMedias = [];
107
- for (let i = 0; i < files.length; i++) {
108
- const file = files[i];
109
- const storageProvider = createDto.mediaStorageProviderMetadata as MediaStorageProviderMetadata;
110
- const fileName = buildStoredMediaFileName(file);
108
+ createDto['fieldMetadata'].mediaStorageProvider = createDto['mediaStorageProviderMetadata'];
111
109
 
112
- switch (storageProvider.type) {
113
- case MediaStorageProviderType.Filesystem:
114
- const fileStoragePath = buildDiskMediaPath(fileName, this.settingService, storageProvider);
115
- await this.diskFileService.copy(file.path, fileStoragePath);
116
- createDto['relativeUri'] = fileName;
117
- break;
118
- case MediaStorageProviderType.AwsS3:
119
- const bucketName = storageProvider.bucketName;
120
- const region = getEffectiveS3Region(this.configService, storageProvider.region);
121
-
122
- // Read file from disk and upload to S3
123
- const fileData = await this.diskFileService.read(file.path);
124
- await this.s3FileService.write(`${bucketName}:${fileName}`, fileData, { contentType: file.mimetype, region });
110
+ const validator = new MediaFieldCrudManager({
111
+ type: createDto['fieldMetadata']?.type as SolidMediaType,
112
+ required: true,
113
+ fieldName: 'files',
114
+ mediaMaxSizeKb: createDto['fieldMetadata']?.mediaMaxSizeKb,
115
+ mediaTypes: createDto['fieldMetadata']?.mediaTypes || [],
116
+ isUpdate: false,
117
+ });
118
+ const validationErrors = validator.validate(createDto, files);
119
+ if (validationErrors.length > 0) {
120
+ throw new BadRequestException(validationErrors.map(error => error.error).join(', '));
121
+ }
125
122
 
126
- createDto['relativeUri'] = fileName;
127
- break;
128
- default:
129
- break;
130
- }
131
- // Delete temp file from disk
132
- await this.diskFileService.delete(file.path);
123
+ const storageProviderType = createDto['mediaStorageProviderMetadata'].type as MediaStorageProviderType;
124
+ const storageProvider = await getMediaStorageProvider(this.moduleRef, storageProviderType);
133
125
 
134
- delete createDto['isPublic'];
135
- const media = this.repo.create(createDto as Partial<Media>) as Media;
136
- const savedMedia = await this.repo.save(media);
137
- savedMedias.push(savedMedia)
138
- }
139
- return savedMedias
126
+ return storageProvider.store(files, { id: Number(createDto['entityId']) }, createDto['fieldMetadata']);
140
127
  }
141
128
 
142
129
  async remove(id: number) {
@@ -190,9 +177,13 @@ export class MediaService extends CRUDService<Media> {
190
177
  async delete(id: number, solidRequestContext: any = {}) {
191
178
  const media = await this.repo.findOne({
192
179
  where: { id },
193
- relations: ['mediaStorageProviderMetadata'],
180
+ relations: ['mediaStorageProviderMetadata', 'modelMetadata'],
194
181
  });
195
182
 
183
+ if (media) {
184
+ await this.assertMediaDeletable([media]);
185
+ }
186
+
196
187
  const result = await super.delete(id, solidRequestContext);
197
188
 
198
189
  if (media) {
@@ -207,9 +198,11 @@ export class MediaService extends CRUDService<Media> {
207
198
  where: {
208
199
  id: In(ids),
209
200
  },
210
- relations: ['mediaStorageProviderMetadata'],
201
+ relations: ['mediaStorageProviderMetadata', 'modelMetadata'],
211
202
  });
212
203
 
204
+ await this.assertMediaDeletable(mediaRecords);
205
+
213
206
  const result = await super.deleteMany(ids, solidRequestContext);
214
207
 
215
208
  for (const media of mediaRecords) {
@@ -219,6 +212,33 @@ export class MediaService extends CRUDService<Media> {
219
212
  return result;
220
213
  }
221
214
 
215
+ /**
216
+ * Media belonging to a published draft/publish-enabled record must survive edits made to
217
+ * later drafts (see DraftPublishHelperService.cloneMediaForVersion) - deleting it directly
218
+ * would strip the published version's media out from under it. Mirrors the equivalent
219
+ * entity-level guard in DraftPublishHelperService.assertDraftPublishDeleteAllowed.
220
+ */
221
+ private async assertMediaDeletable(mediaRecords: Media[]): Promise<void> {
222
+ const blockedIds: number[] = [];
223
+
224
+ for (const media of mediaRecords) {
225
+ if (!media.modelMetadata?.draftPublishWorkflow) continue;
226
+
227
+ const entityRepository = this.entityManager.getRepository(classify(media.modelMetadata.singularName));
228
+ const owningEntity = await entityRepository.findOne({ where: { id: media.entityId } as any });
229
+
230
+ if (owningEntity && (owningEntity as any).isPublished === true) {
231
+ blockedIds.push(media.id);
232
+ }
233
+ }
234
+
235
+ if (blockedIds.length > 0) {
236
+ throw new BadRequestException(
237
+ 'Media belonging to a published record cannot be deleted. Edit the record to create a draft first'
238
+ );
239
+ }
240
+ }
241
+
222
242
  private async decorateMediaRecords(medias: Media[]): Promise<void> {
223
243
  for (const media of medias) {
224
244
  await this.decorateMediaRecord(media);
@@ -258,6 +278,17 @@ export class MediaService extends CRUDService<Media> {
258
278
  }
259
279
 
260
280
  try {
281
+ // Draft/publish versioning may clone a Media row that reuses the same
282
+ // relativeUri (see DraftPublishHelperService.cloneMediaForVersion) instead of
283
+ // duplicating the underlying file. Skip the physical delete if another row
284
+ // still references it.
285
+ const stillReferenced = await this.repo.exists({
286
+ where: { relativeUri: media.relativeUri, id: Not(media.id) },
287
+ });
288
+ if (stillReferenced) {
289
+ return;
290
+ }
291
+
261
292
  const mediaStorageProvider = await this.resolveMediaStorageProvider(media);
262
293
  if (!mediaStorageProvider) {
263
294
  return;
@@ -0,0 +1,39 @@
1
+ import { BadRequestException, Injectable } from "@nestjs/common";
2
+ import { isNotEmpty, matches } from "class-validator";
3
+ import { ModelMetadataService } from "./model-metadata.service";
4
+
5
+ @Injectable()
6
+ export class MetadataValidationService {
7
+ constructor(
8
+ private readonly modelMetadataService: ModelMetadataService,
9
+ ) {}
10
+
11
+ async validateCreateDto(
12
+ modelName: string,
13
+ dto: object,
14
+ ): Promise<void> {
15
+ const model = await this.modelMetadataService.findOneBySingularName(
16
+ modelName,
17
+ { fields: true },
18
+ );
19
+
20
+ for (const field of model.fields ?? []) {
21
+ const value = (dto as Record<string, unknown>)[field.name];
22
+
23
+ if (!isNotEmpty(value) || typeof value !== "string") {
24
+ continue;
25
+ }
26
+
27
+ if (!isNotEmpty(field.regexPattern)) {
28
+ continue;
29
+ }
30
+
31
+ if (!matches(value, new RegExp(field.regexPattern))) {
32
+ throw new BadRequestException(
33
+ field.regexPatternNotMatchingErrorMsg ||
34
+ `Validation errors in ${field.name} is invalid i.e Field regex pattern is invalid`,
35
+ );
36
+ }
37
+ }
38
+ }
39
+ }
@@ -1729,7 +1729,10 @@ export class ModelMetadataService {
1729
1729
  // --------------------
1730
1730
  // Find record index in page
1731
1731
  // --------------------
1732
- const index = records.findIndex(r => String(r.id) === String(recordId));
1732
+ const index = records.findIndex(r =>
1733
+ String(r.id) === String(recordId) ||
1734
+ (r.initialEntityVersionId && String(r.initialEntityVersionId) === String(recordId))
1735
+ );
1733
1736
 
1734
1737
  if (index === -1) {
1735
1738
  throw new BadRequestException(`Record not found in current page`);
@@ -0,0 +1,10 @@
1
+ // Some filter/sort DTOs arrive with bracket-wrapped keys (e.g. "[isPublished]") from
2
+ // query-string parsing. Both CrudHelperService and DraftPublishHelperService need to
3
+ // strip that wrapping before reading keys, so it lives here as a shared utility.
4
+ export function normalizeObjectKeys(obj: any): any {
5
+ return Object.keys(obj).reduce((acc, key) => {
6
+ const newKey = key.replace(/^\[(.*)\]$/, '$1');
7
+ acc[newKey] = obj[key];
8
+ return acc;
9
+ }, {});
10
+ }
@@ -10,6 +10,13 @@ import {
10
10
  export const DEFAULT_MEDIA_UPLOAD_DIR = "media-uploads";
11
11
  export const DEFAULT_MEDIA_FILE_STORAGE_DIR = "media-files-storage";
12
12
 
13
+ // Seeded setting values are written once and never overwritten, so an unparseable
14
+ // env var would persist. Fall back whenever it is missing or not a positive number.
15
+ const timeoutFromEnv = (value: string | undefined, fallback: number): number => {
16
+ const parsed = Number(value);
17
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
18
+ };
19
+
13
20
  // 1.
14
21
  const getSolidCoreSettings = (isProd: boolean) =>
15
22
  [
@@ -125,10 +132,10 @@ const getSolidCoreSettings = (isProd: boolean) =>
125
132
  },
126
133
  {
127
134
  moduleName: "solid-core",
128
- key: "rowClickAction",
135
+ key: "recordClickAction",
129
136
  value: "edit",
130
137
  level: SettingLevel.SystemAdminEditable,
131
- label: "Row Click Action",
138
+ label: "Record Click Action",
132
139
  group: "app-settings",
133
140
  sortOrder: 45,
134
141
  controlType: "selectionStatic",
@@ -136,7 +143,7 @@ const getSolidCoreSettings = (isProd: boolean) =>
136
143
  { label: "Edit", value: "edit" },
137
144
  { label: "View", value: "view" },
138
145
  ],
139
- helpText: "Decides whether clicking a list row opens the record in edit mode or view mode.",
146
+ helpText: "Decides whether clicking a record in List, Card, Kanban, or Tree View opens it in edit mode or view mode.",
140
147
  },
141
148
  {
142
149
  moduleName: "solid-core",
@@ -1474,6 +1481,31 @@ const getSolidCoreSettings = (isProd: boolean) =>
1474
1481
  value: process.env.COMMON_META_WHATSAPP_APP_SECRET,
1475
1482
  level: SettingLevel.SystemEnv,
1476
1483
  },
1484
+ {
1485
+ moduleName: "solid-core",
1486
+ key: "uiTestDefaultTimeoutMs",
1487
+ value: timeoutFromEnv(process.env.COMMON_UI_TEST_DEFAULT_TIMEOUT_MS, 30000),
1488
+ level: SettingLevel.SystemAdminEditable,
1489
+ label: "UI Test Default Timeout (ms)",
1490
+ group: "testing-settings",
1491
+ sortOrder: 10,
1492
+ controlType: "numeric",
1493
+ helpText: "How long UI test steps wait for an element before failing. Raise this if tests time out on slow screens. Overridden by the --ui-timeout-ms flag and by a per-step timeoutMs.",
1494
+ },
1495
+ {
1496
+ moduleName: "solid-core",
1497
+ key: "uiTestNavigationTimeoutMs",
1498
+ value: timeoutFromEnv(
1499
+ process.env.COMMON_UI_TEST_NAVIGATION_TIMEOUT_MS,
1500
+ timeoutFromEnv(process.env.COMMON_UI_TEST_DEFAULT_TIMEOUT_MS, 30000),
1501
+ ),
1502
+ level: SettingLevel.SystemAdminEditable,
1503
+ label: "UI Test Navigation Timeout (ms)",
1504
+ group: "testing-settings",
1505
+ sortOrder: 20,
1506
+ controlType: "numeric",
1507
+ helpText: "How long the ui.goto step waits for a page to load before failing. Falls back to the UI test default timeout.",
1508
+ },
1477
1509
  ] as const satisfies SettingDefinition[];
1478
1510
 
1479
1511
  // 2.
@@ -15,6 +15,7 @@ import { IS_DASHBOARD_WIDGET_DATA_PROVIDER } from 'src/decorators/dashboard-widg
15
15
  import { IS_EXTENSION_USER_CREATION_PROVIDER } from 'src/decorators/extension-user-creation-provider.decorator';
16
16
  import { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';
17
17
  import { IS_WA_PROVIDER } from 'src/decorators/whatsapp-provider.decorator';
18
+ import { IS_WORKFLOW_FIELD_DATA_PROVIDER } from 'src/decorators/workflow-field-data-provider.decorator';
18
19
  import { SolidRegistry } from 'src/helpers/solid-registry';
19
20
  import { AuditSubscriber } from 'src/subscribers/audit.subscriber';
20
21
  import { ComputedEntityFieldSubscriber } from 'src/subscribers/computed-entity-field.subscriber';
@@ -69,6 +70,12 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
69
70
  this.solidRegistry.registerSelectionProvider(selectionProvider);
70
71
  });
71
72
 
73
+ // Register all IWorkflowFieldDataProvider implementations
74
+ const workflowFieldDataProviders = this.discoveryService.getProviders().filter((provider) => this.isWorkflowFieldDataProvider(provider));
75
+ workflowFieldDataProviders.forEach((provider) => {
76
+ this.solidRegistry.registerWorkflowFieldDataProvider(provider);
77
+ });
78
+
72
79
  // Register all IDashboardWidgetDataProvider implementations
73
80
  const dashboardWidgetDataProviders = this.discoveryService.getProviders().filter((provider) => this.isDashboardWidgetDataProvider(provider));
74
81
  dashboardWidgetDataProviders.forEach((provider) => {
@@ -277,6 +284,18 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
277
284
  return !!isSelectionProvider;
278
285
  }
279
286
 
287
+ private isWorkflowFieldDataProvider(provider: InstanceWrapper) {
288
+ const { instance } = provider;
289
+ if (!instance) return false;
290
+
291
+ const isWorkflowFieldDataProvider = this.reflector.get<boolean>(
292
+ IS_WORKFLOW_FIELD_DATA_PROVIDER,
293
+ instance.constructor,
294
+ );
295
+
296
+ return !!isWorkflowFieldDataProvider;
297
+ }
298
+
280
299
  private isDashboardWidgetDataProvider(provider: InstanceWrapper) {
281
300
  const { instance } = provider;
282
301
  if (!instance) return false;
@@ -156,10 +156,25 @@ export class UserService extends CRUDService<User> {
156
156
  if (!user) {
157
157
  throw new Error(ERROR_MESSAGES.USER_NOT_FOUND);
158
158
  }
159
- if (updateDto.roles != null) {
160
- await this.addRolesToUser(user.username, updateDto.roles);
159
+
160
+ const { roles, ...userUpdateDto } = updateDto || {};
161
+ const savedUser = await this.update(
162
+ id,
163
+ userUpdateDto,
164
+ files,
165
+ true,
166
+ solidRequestContext,
167
+ );
168
+
169
+ if (roles != null) {
170
+ await this.addRolesToUser(savedUser.username, roles);
171
+ return this.repo.findOne({
172
+ where: { id: savedUser.id },
173
+ relations: { roles: true },
174
+ });
161
175
  }
162
- await this.update(id, updateDto, files, true);
176
+
177
+ return savedUser;
163
178
  }
164
179
 
165
180
  async addRoleToUser(username: string, roleName: string): Promise<User> {
@@ -4,8 +4,6 @@ import { InjectEntityManager } from '@nestjs/typeorm';
4
4
  import { CRUDService } from 'src/services/crud.service';
5
5
  import { EntityManager } from 'typeorm';
6
6
 
7
- import { classify } from '../helpers/string.helper';
8
- import { Locale } from 'src/entities/locale.entity';
9
7
  import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
10
8
  import { SolidRegistry } from 'src/helpers/solid-registry';
11
9
  import { ModelMetadataRepository } from 'src/repository/model-metadata.repository';
@@ -18,6 +16,7 @@ import { MenuItemMetadataService } from './menu-item-metadata.service';
18
16
  import { SolidIntrospectService } from './solid-introspect.service';
19
17
  import { UserViewMetadataService } from './user-view-metadata.service';
20
18
  import { MenuItemMetadata } from 'src/entities/menu-item-metadata.entity';
19
+ import { IWorkflowFieldDataProviderValues } from 'src/interfaces';
21
20
 
22
21
  @Injectable()
23
22
  export class ViewMetadataService extends CRUDService<ViewMetadata> {
@@ -112,62 +111,88 @@ export class ViewMetadataService extends CRUDService<ViewMetadata> {
112
111
 
113
112
  private readonly logger = new Logger(ViewMetadataService.name);
114
113
 
115
- //for locales
116
- private async getEntityRecordsInAllLocales(
117
- modelName: string,
118
- id: string,
119
- defaultEntityLocaleIdFromQuery?: string
120
- ): Promise<{ records: any[], defaultEntityLocaleId: string | null }> {
121
- const solidRegistry = await this.moduleRef.get(SolidRegistry, { strict: false });
122
- // const currentEntityTarget = solidRegistry.getEntityTarget(this.entityManager, classify(modelName));
123
- const currentEntityRepository = this.entityManager.getRepository(classify(modelName));
124
-
125
- // Case 1: Creating a new record with no defaultEntityLocaleId to clone
126
- if (id === 'new' && !defaultEntityLocaleIdFromQuery) {
127
- this.logger.debug(`Creating new record without cloning from any defaultEntityLocaleId.`);
128
- return { records: [], defaultEntityLocaleId: null };
129
- }
130
-
131
- // Case 2: Creating a new record and cloning from an existing defaultEntityLocaleId
132
- if (id === 'new' && defaultEntityLocaleIdFromQuery) {
133
- this.logger.debug(`Creating new record by cloning translations from defaultEntityLocaleId: ${defaultEntityLocaleIdFromQuery}`);
134
-
135
- const records = await currentEntityRepository.find({
136
- where: [
137
- { defaultEntityLocaleId: defaultEntityLocaleIdFromQuery },
138
- { id: defaultEntityLocaleIdFromQuery }
139
- ]
140
- });
114
+ private parseJsonObject(value: any): Record<string, any> {
115
+ if (!value) {
116
+ return {};
117
+ }
118
+
119
+ if (typeof value === 'object') {
120
+ return value;
121
+ }
141
122
 
142
- this.logger.debug(`Found ${records.length} cloned records for new entity.`);
143
- return { records, defaultEntityLocaleId: defaultEntityLocaleIdFromQuery };
123
+ if (typeof value === 'string') {
124
+ try {
125
+ return JSON.parse(value);
126
+ } catch (error: any) {
127
+ this.logger.warn(`Unable to parse workflow field provider context: ${error?.message ?? error}`);
128
+ }
144
129
  }
145
130
 
146
- // Case 3: Editing an existing entity
147
- const entityRecord = await currentEntityRepository.findOne({ where: { id } });
131
+ return {};
132
+ }
148
133
 
149
- if (!entityRecord) {
150
- this.logger.warn(`No entity found for id ${id}`);
151
- return { records: [], defaultEntityLocaleId: null };
134
+ private async getDefaultWorkflowFieldData(
135
+ workflowField: FieldMetadata,
136
+ workflowFieldName: string,
137
+ fieldsMap: Map<string, FieldMetadata>,
138
+ ): Promise<IWorkflowFieldDataProviderValues[]> {
139
+ if (workflowField.type === 'selectionStatic') {
140
+ return workflowField.selectionStaticValues.map(item => {
141
+ const [value, label] = item.split(":");
142
+ return { label, value };
143
+ });
152
144
  }
153
145
 
154
- const defaultEntityLocaleId = entityRecord.defaultEntityLocaleId || entityRecord.id;
155
- if (entityRecord.defaultEntityLocaleId) {
156
- this.logger.debug(`Editing translated locale record. Translation root id: ${defaultEntityLocaleId}`);
157
- } else {
158
- this.logger.debug(`Editing translation root record with id ${defaultEntityLocaleId}`);
146
+ if (workflowField.type === 'relation' && workflowField.relationType === 'many-to-one') {
147
+ const comodelCrudService = this.introspectService.getCRUDService(workflowField.relationCoModelSingularName);
148
+ const data = await comodelCrudService.find({ limit: 100, offset: 0, });
149
+ const records = data.records ?? [];
150
+ const workflowFieldMetadata = fieldsMap.get(workflowFieldName);
151
+ const workflowFieldUserKey = (workflowFieldMetadata as any)?.relationModel?.userKeyField?.name;
152
+
153
+ if (!workflowFieldUserKey) {
154
+ this.logger.warn(`Unable to identify relation user key for workflow field: ${workflowFieldName}`);
155
+ return [];
156
+ }
157
+
158
+ return records.map(item => ({ label: item[workflowFieldUserKey], value: item['id'] }));
159
159
  }
160
160
 
161
- const records = await currentEntityRepository.find({
162
- where: [
163
- { defaultEntityLocaleId: defaultEntityLocaleId },
164
- { id: defaultEntityLocaleId }
165
- ]
166
- });
161
+ return [];
162
+ }
167
163
 
168
- this.logger.debug(`Found ${records.length} records in all locales for existing entity.`);
164
+ private async getWorkflowFieldData(
165
+ entity: ViewMetadata,
166
+ workflowField: FieldMetadata,
167
+ workflowFieldName: string,
168
+ fieldsMap: Map<string, FieldMetadata>,
169
+ query: Record<string, any>,
170
+ activeUser: any,
171
+ ): Promise<readonly IWorkflowFieldDataProviderValues[]> {
172
+ const workflowFieldDataProviderName = entity.layout?.attrs?.workflowFieldDataProvider;
173
+ if (workflowFieldDataProviderName) {
174
+ const solidRegistry = await this.moduleRef.get(SolidRegistry, { strict: false });
175
+ const provider = solidRegistry.getWorkflowFieldDataProviderInstance(workflowFieldDataProviderName);
176
+ if (!provider) {
177
+ throw new BadRequestException(`Workflow field data provider ${workflowFieldDataProviderName} not found`);
178
+ }
179
+
180
+ return provider.values({
181
+ entityId: query?.id,
182
+ modelName: entity.model?.singularName ?? query?.modelName,
183
+ moduleName: entity.module?.name ?? query?.moduleName,
184
+ workflowFieldName,
185
+ workflowField,
186
+ solidModel: entity.model,
187
+ solidView: entity,
188
+ solidFieldsMetadata: Object.fromEntries(fieldsMap),
189
+ query,
190
+ providerContext: this.parseJsonObject(entity.layout?.attrs?.workflowFieldDataProviderCtxt),
191
+ activeUser,
192
+ });
193
+ }
169
194
 
170
- return { records, defaultEntityLocaleId };
195
+ return this.getDefaultWorkflowFieldData(workflowField, workflowFieldName, fieldsMap);
171
196
  }
172
197
 
173
198
  // START: Custom Service Methods
@@ -331,28 +356,9 @@ export class ViewMetadataService extends CRUDService<ViewMetadata> {
331
356
  }
332
357
 
333
358
  // 9. Use the resolved workflowField to populate workflow specific metadata.
334
- // Check if we were able to resolve an actual workflowField.
335
- let solidFormViewWorkflowData = [];
359
+ let solidFormViewWorkflowData: readonly IWorkflowFieldDataProviderValues[] = [];
336
360
  if (viewType === 'form' && workflowField) {
337
- // check for type of workflow field.
338
- // for workflowFields of type selectionStatic we simply return the key/values from field metadata AS-IS
339
- if (workflowField.type === 'selectionStatic') {
340
- solidFormViewWorkflowData = workflowField.selectionStaticValues.map(item => {
341
- const [value, label] = item.split(":");
342
- return { label, value };
343
- });
344
- }
345
- // for workflowFields of type relation.many-to-one we need to query the co-model, and return data in key/value format.
346
- if (workflowField.type === 'relation' && workflowField.relationType === 'many-to-one') {
347
- const comodelCrudService = this.introspectService.getCRUDService(workflowField.relationCoModelSingularName);
348
- const data = await comodelCrudService.find({ limit: 100, offset: 0, });
349
- const records = data.records ?? [];
350
- const workflowFieldMetadata = fieldsMap.get(workflowFieldName);
351
- const workflowFielUserkey = workflowFieldMetadata['relationModel']['userKeyField']['name'];
352
-
353
- // iterate over the comodel records extracting the label & value.
354
- solidFormViewWorkflowData = records.map(item => ({ 'label': item[workflowFielUserkey], 'value': item['id'] }))
355
- }
361
+ solidFormViewWorkflowData = await this.getWorkflowFieldData(entity, workflowField, workflowFieldName, fieldsMap, query, activeUser);
356
362
  }
357
363
 
358
364
  // 10. If this model supports internationalisation, we need to load the locales applicable with the id of an actual record for each locale if present.
@@ -366,92 +372,12 @@ export class ViewMetadataService extends CRUDService<ViewMetadata> {
366
372
  * ]
367
373
  */
368
374
 
369
- const applicableLocales: any = []
370
- // if (entity.model.internationalisation) {
371
- // const allLocales = await this.entityManager.getRepository(Locale).find({});
372
-
373
- // if (id === 'new') {
374
- // allLocales.forEach(locale => {
375
- // applicableLocales.push({
376
- // locale: locale.locale,
377
- // displayName: locale.displayName,
378
- // isDefault: locale.isDefault ? 'yes' : 'no',
379
- // defaultEntityLocaleId: null,
380
- // entityId: null
381
- // });
382
- // });
383
- // }
384
- // else {
385
- // const defaultLocale = allLocales.find(locale => locale.isDefault);
386
- // this.logger.debug(`Default locale is: ${defaultLocale.locale}`);
387
-
388
- // // Get hold of the repository for the current model
389
- // const solidRegistry = await this.moduleRef.get(SolidRegistry, { strict: false });
390
- // const currentEntityTarget = solidRegistry.getEntityTarget(this.entityManager, classify(modelName));
391
- // const currentEntityRepository = this.entityManager.getRepository(currentEntityTarget);
392
-
393
- // // We are in edit mode, the id that is being edited could be a record tagged with the default locale or it could be tagged with a non-default locale.
394
- // const entityRecord = await currentEntityRepository.findOne({
395
- // where: {
396
- // id: id,
397
- // }
398
- // });
399
- // if(entityRecord){
400
- // // Resolve the default entity locale id....
401
- // let defaultEntityLocaleId = null;
402
- // if (entityRecord.localeName === defaultLocale.locale) {
403
- // defaultEntityLocaleId = entityRecord.id;
404
- // this.logger.debug(`You are editing a record tagged with the default locale: ${entityRecord.localeName}.`);
405
- // }
406
- // else {
407
- // defaultEntityLocaleId = entityRecord.defaultEntityLocaleId;
408
- // this.logger.debug(`You are editing a record tagged with the non-default locale: ${entityRecord.localeName}. `);
409
- // }
410
- // this.logger.debug(`Identified default Entity Locale Id: ${defaultEntityLocaleId}`);
411
-
412
- // // Now we query for all records in the same model matching the defaultEntityLocaleId
413
- // // Get all records mathcing the defaultEntityLocaleId or where the id is same as the defaultEntityLocaleId
414
- // const entityRecordsInAllLocales = await currentEntityRepository.find({
415
- // where: [
416
- // { defaultEntityLocaleId: defaultEntityLocaleId },
417
- // { id: defaultEntityLocaleId }
418
- // ],
419
- // });
420
- // this.logger.debug(`Found ${entityRecordsInAllLocales.length} records in all locales for the defaultEntityLocaleId: ${defaultEntityLocaleId}`);
421
-
422
- // // Loop over all locales and populate the applicableLocales array
423
- // for (const locale of allLocales) {
424
- // // Find the record in the entityRecordsInAllLocales that matches the current locale
425
- // const matchingRecord = entityRecordsInAllLocales.find(record => record.localeName === locale.locale);
426
-
427
- // applicableLocales.push({
428
- // locale: locale.locale,
429
- // displayName: locale.displayName,
430
- // isDefault: locale.isDefault ? 'yes' : 'no',
431
- // defaultEntityLocaleId: defaultEntityLocaleId,
432
- // entityId: (matchingRecord ? matchingRecord.id : null)
433
- // });
434
- // }
435
- // }else{
436
- // this.logger.warn(`No record found for id: ${id} in model: ${modelName}. Cannot determine applicable locales.`);
437
- // }
438
- // }
439
- // }
375
+ let applicableLocales: any[] = [];
440
376
  if (entity.model.internationalisation) {
441
- const defaultEntityLocaleIdFromQuery = query?.defaultEntityLocaleId;
442
- const { records: entityRecordsInAllLocales, defaultEntityLocaleId } =
443
- await this.getEntityRecordsInAllLocales(modelName, id, defaultEntityLocaleIdFromQuery);
444
- const allLocales = await this.entityManager.getRepository(Locale).find({});
445
- for (const locale of allLocales) {
446
- const matchingRecord = entityRecordsInAllLocales.find(record => record.localeName === locale.locale);
447
- applicableLocales.push({
448
- locale: locale.locale,
449
- displayName: locale.displayName,
450
- isDefault: locale.isDefault ? 'yes' : 'no',
451
- defaultEntityLocaleId: defaultEntityLocaleId,
452
- entityId: matchingRecord ? matchingRecord.id : null
453
- });
454
- }
377
+ const draftPublishEnabled = entity.model.draftPublishWorkflow === true;
378
+ applicableLocales = await this.internationalisationHelperService.buildApplicableLocales(
379
+ this.entityManager, modelName, id, query?.defaultEntityLocaleId, draftPublishEnabled,
380
+ );
455
381
  }
456
382
 
457
383
  const r = {