@solidxai/core 0.1.13-beta.2 → 0.1.13-beta.20

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 (512) hide show
  1. package/CHANGELOG.md +9517 -0
  2. package/README.md +19 -0
  3. package/dist/commands/run-tests.command.d.ts +9 -1
  4. package/dist/commands/run-tests.command.d.ts.map +1 -1
  5. package/dist/commands/run-tests.command.js +69 -6
  6. package/dist/commands/run-tests.command.js.map +1 -1
  7. package/dist/commands/seed.command.d.ts +2 -0
  8. package/dist/commands/seed.command.d.ts.map +1 -1
  9. package/dist/commands/seed.command.js +21 -0
  10. package/dist/commands/seed.command.js.map +1 -1
  11. package/dist/config/cache.options.d.ts.map +1 -1
  12. package/dist/config/cache.options.js +2 -2
  13. package/dist/config/cache.options.js.map +1 -1
  14. package/dist/constants/chatter-message.constants.d.ts +1 -0
  15. package/dist/constants/chatter-message.constants.d.ts.map +1 -1
  16. package/dist/constants/chatter-message.constants.js +3 -1
  17. package/dist/constants/chatter-message.constants.js.map +1 -1
  18. package/dist/constants/draft-publish-fields.d.ts +2 -0
  19. package/dist/constants/draft-publish-fields.d.ts.map +1 -0
  20. package/dist/constants/draft-publish-fields.js +5 -0
  21. package/dist/constants/draft-publish-fields.js.map +1 -0
  22. package/dist/constants/error-messages.d.ts +7 -0
  23. package/dist/constants/error-messages.d.ts.map +1 -1
  24. package/dist/constants/error-messages.js +7 -0
  25. package/dist/constants/error-messages.js.map +1 -1
  26. package/dist/constants/media-file-types.d.ts +12 -0
  27. package/dist/constants/media-file-types.d.ts.map +1 -1
  28. package/dist/constants/media-file-types.js +65 -1
  29. package/dist/constants/media-file-types.js.map +1 -1
  30. package/dist/constants/success-messages.d.ts +3 -0
  31. package/dist/constants/success-messages.d.ts.map +1 -1
  32. package/dist/constants/success-messages.js +3 -0
  33. package/dist/constants/success-messages.js.map +1 -1
  34. package/dist/constants/user.constants.d.ts +2 -0
  35. package/dist/constants/user.constants.d.ts.map +1 -0
  36. package/dist/constants/user.constants.js +5 -0
  37. package/dist/constants/user.constants.js.map +1 -0
  38. package/dist/controllers/action-metadata.controller.d.ts +1 -1
  39. package/dist/controllers/action-metadata.controller.js +1 -1
  40. package/dist/controllers/agent-event.controller.d.ts +1 -1
  41. package/dist/controllers/agent-event.controller.js +1 -1
  42. package/dist/controllers/agent-session.controller.d.ts +1 -1
  43. package/dist/controllers/agent-session.controller.js +1 -1
  44. package/dist/controllers/authentication.controller.d.ts +1 -1
  45. package/dist/controllers/authentication.controller.d.ts.map +1 -1
  46. package/dist/controllers/authentication.controller.js +4 -3
  47. package/dist/controllers/authentication.controller.js.map +1 -1
  48. package/dist/controllers/chatter-message.controller.d.ts +5 -0
  49. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  50. package/dist/controllers/chatter-message.controller.js +14 -0
  51. package/dist/controllers/chatter-message.controller.js.map +1 -1
  52. package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -1
  53. package/dist/controllers/dashboard-user-layout.controller.js +1 -1
  54. package/dist/controllers/email-template.controller.d.ts +1 -1
  55. package/dist/controllers/email-template.controller.js +1 -1
  56. package/dist/controllers/export-template.controller.d.ts +1 -1
  57. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  58. package/dist/controllers/export-template.controller.js +6 -4
  59. package/dist/controllers/export-template.controller.js.map +1 -1
  60. package/dist/controllers/export-transaction.controller.d.ts +1 -1
  61. package/dist/controllers/export-transaction.controller.js +1 -1
  62. package/dist/controllers/field-metadata.controller.d.ts +2 -2
  63. package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -1
  64. package/dist/controllers/import-transaction-error-log.controller.js +1 -1
  65. package/dist/controllers/import-transaction.controller.d.ts +1 -1
  66. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  67. package/dist/controllers/import-transaction.controller.js +7 -7
  68. package/dist/controllers/import-transaction.controller.js.map +1 -1
  69. package/dist/controllers/list-of-values.controller.d.ts +1 -1
  70. package/dist/controllers/list-of-values.controller.js +1 -1
  71. package/dist/controllers/locale.controller.d.ts +1 -1
  72. package/dist/controllers/locale.controller.js +1 -1
  73. package/dist/controllers/mcp-audit-log.controller.d.ts +1 -1
  74. package/dist/controllers/mcp-audit-log.controller.js +1 -1
  75. package/dist/controllers/media.controller.d.ts +2 -2
  76. package/dist/controllers/media.controller.d.ts.map +1 -1
  77. package/dist/controllers/media.controller.js +13 -8
  78. package/dist/controllers/media.controller.js.map +1 -1
  79. package/dist/controllers/menu-item-metadata.controller.d.ts +1 -1
  80. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  81. package/dist/controllers/model-sequence.controller.d.ts +1 -1
  82. package/dist/controllers/model-sequence.controller.js +1 -1
  83. package/dist/controllers/module-package.controller.d.ts.map +1 -1
  84. package/dist/controllers/module-package.controller.js +2 -3
  85. package/dist/controllers/module-package.controller.js.map +1 -1
  86. package/dist/controllers/mpin-authentication.controller.d.ts +44 -0
  87. package/dist/controllers/mpin-authentication.controller.d.ts.map +1 -0
  88. package/dist/controllers/mpin-authentication.controller.js +102 -0
  89. package/dist/controllers/mpin-authentication.controller.js.map +1 -0
  90. package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
  91. package/dist/controllers/mq-message-queue.controller.js +1 -1
  92. package/dist/controllers/mq-message.controller.d.ts +1 -1
  93. package/dist/controllers/mq-message.controller.js +1 -1
  94. package/dist/controllers/permission-metadata.controller.d.ts +1 -1
  95. package/dist/controllers/permission-metadata.controller.js +1 -1
  96. package/dist/controllers/role-metadata.controller.d.ts +1 -1
  97. package/dist/controllers/role-metadata.controller.js +1 -1
  98. package/dist/controllers/saved-filters.controller.d.ts +1 -1
  99. package/dist/controllers/saved-filters.controller.js +1 -1
  100. package/dist/controllers/scheduled-job.controller.d.ts +1 -1
  101. package/dist/controllers/scheduled-job.controller.js +1 -1
  102. package/dist/controllers/security-rule.controller.d.ts +1 -1
  103. package/dist/controllers/security-rule.controller.js +1 -1
  104. package/dist/controllers/sms-template.controller.d.ts +1 -1
  105. package/dist/controllers/sms-template.controller.js +1 -1
  106. package/dist/controllers/user-activity-history.controller.d.ts +1 -1
  107. package/dist/controllers/user-activity-history.controller.js +1 -1
  108. package/dist/controllers/user-view-metadata.controller.d.ts +1 -1
  109. package/dist/controllers/user-view-metadata.controller.js +1 -1
  110. package/dist/controllers/user.controller.d.ts +2 -2
  111. package/dist/controllers/user.controller.js +2 -2
  112. package/dist/controllers/view-metadata.controller.d.ts +2 -2
  113. package/dist/controllers/view-metadata.controller.js +1 -1
  114. package/dist/controllers/workflow-definition.controller.d.ts +1 -1
  115. package/dist/controllers/workflow-definition.controller.js +1 -1
  116. package/dist/controllers/workflow-execution-artifact.controller.d.ts +1 -1
  117. package/dist/controllers/workflow-execution-artifact.controller.js +1 -1
  118. package/dist/controllers/workflow-execution-log.controller.d.ts +1 -1
  119. package/dist/controllers/workflow-execution-log.controller.js +1 -1
  120. package/dist/controllers/workflow-execution.controller.d.ts +1 -1
  121. package/dist/controllers/workflow-execution.controller.js +1 -1
  122. package/dist/controllers/workflow-secret.controller.d.ts +1 -1
  123. package/dist/controllers/workflow-secret.controller.js +1 -1
  124. package/dist/controllers/workflow-step-execution.controller.d.ts +1 -1
  125. package/dist/controllers/workflow-step-execution.controller.js +1 -1
  126. package/dist/controllers/workflow-trigger-execution.controller.d.ts +1 -1
  127. package/dist/controllers/workflow-trigger-execution.controller.js +1 -1
  128. package/dist/dtos/basic-filters.dto.d.ts +0 -1
  129. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  130. package/dist/dtos/basic-filters.dto.js +1 -6
  131. package/dist/dtos/basic-filters.dto.js.map +1 -1
  132. package/dist/dtos/change-mpin.dto.d.ts +6 -0
  133. package/dist/dtos/change-mpin.dto.d.ts.map +1 -0
  134. package/dist/dtos/change-mpin.dto.js +39 -0
  135. package/dist/dtos/change-mpin.dto.js.map +1 -0
  136. package/dist/dtos/create-field-metadata.dto.d.ts +2 -6
  137. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  138. package/dist/dtos/create-field-metadata.dto.js +4 -10
  139. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  140. package/dist/dtos/create-model-sequence.dto.d.ts +1 -1
  141. package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -1
  142. package/dist/dtos/create-model-sequence.dto.js +1 -1
  143. package/dist/dtos/create-model-sequence.dto.js.map +1 -1
  144. package/dist/dtos/mpin-login.dto.d.ts +5 -0
  145. package/dist/dtos/mpin-login.dto.d.ts.map +1 -0
  146. package/dist/dtos/mpin-login.dto.js +33 -0
  147. package/dist/dtos/mpin-login.dto.js.map +1 -0
  148. package/dist/dtos/setup-mpin.dto.d.ts +7 -0
  149. package/dist/dtos/setup-mpin.dto.d.ts.map +1 -0
  150. package/dist/dtos/setup-mpin.dto.js +47 -0
  151. package/dist/dtos/setup-mpin.dto.js.map +1 -0
  152. package/dist/entities/common.entity.d.ts +4 -0
  153. package/dist/entities/common.entity.d.ts.map +1 -1
  154. package/dist/entities/common.entity.js +25 -1
  155. package/dist/entities/common.entity.js.map +1 -1
  156. package/dist/entities/dashboard-user-layout.entity.js +2 -2
  157. package/dist/entities/dashboard-user-layout.entity.js.map +1 -1
  158. package/dist/entities/saved-filters.entity.js +3 -3
  159. package/dist/entities/saved-filters.entity.js.map +1 -1
  160. package/dist/entities/user-device-credential.entity.d.ts +18 -0
  161. package/dist/entities/user-device-credential.entity.d.ts.map +1 -0
  162. package/dist/entities/user-device-credential.entity.js +91 -0
  163. package/dist/entities/user-device-credential.entity.js.map +1 -0
  164. package/dist/entities/user.entity.d.ts.map +1 -1
  165. package/dist/entities/user.entity.js +36 -0
  166. package/dist/entities/user.entity.js.map +1 -1
  167. package/dist/entities/view-metadata.entity.js.map +1 -1
  168. package/dist/entities/workflow-execution-artifact.entity.d.ts.map +1 -1
  169. package/dist/entities/workflow-execution-artifact.entity.js +4 -3
  170. package/dist/entities/workflow-execution-artifact.entity.js.map +1 -1
  171. package/dist/entities/workflow-execution-log.entity.d.ts.map +1 -1
  172. package/dist/entities/workflow-execution-log.entity.js +4 -3
  173. package/dist/entities/workflow-execution-log.entity.js.map +1 -1
  174. package/dist/entities/workflow-execution.entity.d.ts.map +1 -1
  175. package/dist/entities/workflow-execution.entity.js +3 -2
  176. package/dist/entities/workflow-execution.entity.js.map +1 -1
  177. package/dist/entities/workflow-secret.entity.d.ts.map +1 -1
  178. package/dist/entities/workflow-secret.entity.js +3 -2
  179. package/dist/entities/workflow-secret.entity.js.map +1 -1
  180. package/dist/entities/workflow-step-execution.entity.d.ts.map +1 -1
  181. package/dist/entities/workflow-step-execution.entity.js +3 -2
  182. package/dist/entities/workflow-step-execution.entity.js.map +1 -1
  183. package/dist/entities/workflow-trigger-execution.entity.d.ts.map +1 -1
  184. package/dist/entities/workflow-trigger-execution.entity.js +7 -6
  185. package/dist/entities/workflow-trigger-execution.entity.js.map +1 -1
  186. package/dist/factories/mail.factory.d.ts.map +1 -1
  187. package/dist/factories/mail.factory.js +4 -0
  188. package/dist/factories/mail.factory.js.map +1 -1
  189. package/dist/filters/http-exception.filter.d.ts.map +1 -1
  190. package/dist/filters/http-exception.filter.js +5 -1
  191. package/dist/filters/http-exception.filter.js.map +1 -1
  192. package/dist/helpers/bootstrap.helper.d.ts +5 -2
  193. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  194. package/dist/helpers/bootstrap.helper.js +7 -3
  195. package/dist/helpers/bootstrap.helper.js.map +1 -1
  196. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -0
  197. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  198. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +18 -11
  199. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  200. package/dist/helpers/file-download.helper.d.ts +9 -0
  201. package/dist/helpers/file-download.helper.d.ts.map +1 -0
  202. package/dist/helpers/file-download.helper.js +19 -0
  203. package/dist/helpers/file-download.helper.js.map +1 -0
  204. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  205. package/dist/helpers/model-metadata-helper.service.js +30 -1
  206. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  207. package/dist/helpers/security.helper.d.ts +5 -1
  208. package/dist/helpers/security.helper.d.ts.map +1 -1
  209. package/dist/helpers/security.helper.js +15 -4
  210. package/dist/helpers/security.helper.js.map +1 -1
  211. package/dist/helpers/solid-core-error-codes-provider.service.d.ts.map +1 -1
  212. package/dist/helpers/solid-core-error-codes-provider.service.js +45 -0
  213. package/dist/helpers/solid-core-error-codes-provider.service.js.map +1 -1
  214. package/dist/helpers/solid-microservice-adapter.service.d.ts.map +1 -1
  215. package/dist/helpers/solid-microservice-adapter.service.js +1 -1
  216. package/dist/helpers/solid-microservice-adapter.service.js.map +1 -1
  217. package/dist/helpers/solid-registry.js +1 -1
  218. package/dist/helpers/solid-registry.js.map +1 -1
  219. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
  220. package/dist/helpers/typeorm-db-helper.js +9 -0
  221. package/dist/helpers/typeorm-db-helper.js.map +1 -1
  222. package/dist/index.d.ts +10 -0
  223. package/dist/index.d.ts.map +1 -1
  224. package/dist/index.js +10 -0
  225. package/dist/index.js.map +1 -1
  226. package/dist/interfaces/active-user-data.interface.d.ts +1 -0
  227. package/dist/interfaces/active-user-data.interface.d.ts.map +1 -1
  228. package/dist/interfaces/active-user-data.interface.js.map +1 -1
  229. package/dist/interfaces.d.ts +1 -0
  230. package/dist/interfaces.d.ts.map +1 -1
  231. package/dist/interfaces.js.map +1 -1
  232. package/dist/repository/user-device-credential.repository.d.ts +12 -0
  233. package/dist/repository/user-device-credential.repository.d.ts.map +1 -0
  234. package/dist/repository/user-device-credential.repository.js +34 -0
  235. package/dist/repository/user-device-credential.repository.js.map +1 -0
  236. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  237. package/dist/seeders/module-metadata-seeder.service.js +51 -30
  238. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  239. package/dist/seeders/module-test-data.service.d.ts +3 -1
  240. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  241. package/dist/seeders/module-test-data.service.js +8 -2
  242. package/dist/seeders/module-test-data.service.js.map +1 -1
  243. package/dist/seeders/seed-data/solid-core-metadata.json +290 -78
  244. package/dist/services/api-key.service.d.ts.map +1 -1
  245. package/dist/services/api-key.service.js +1 -1
  246. package/dist/services/api-key.service.js.map +1 -1
  247. package/dist/services/authentication.service.d.ts +9 -5
  248. package/dist/services/authentication.service.d.ts.map +1 -1
  249. package/dist/services/authentication.service.js +102 -23
  250. package/dist/services/authentication.service.js.map +1 -1
  251. package/dist/services/chatter-message.service.d.ts +15 -1
  252. package/dist/services/chatter-message.service.d.ts.map +1 -1
  253. package/dist/services/chatter-message.service.js +56 -4
  254. package/dist/services/chatter-message.service.js.map +1 -1
  255. package/dist/services/crud-helper.service.d.ts +6 -4
  256. package/dist/services/crud-helper.service.d.ts.map +1 -1
  257. package/dist/services/crud-helper.service.js +32 -48
  258. package/dist/services/crud-helper.service.js.map +1 -1
  259. package/dist/services/crud.service.d.ts +13 -1
  260. package/dist/services/crud.service.d.ts.map +1 -1
  261. package/dist/services/crud.service.js +93 -68
  262. package/dist/services/crud.service.js.map +1 -1
  263. package/dist/services/datasource-introspection.service.d.ts.map +1 -1
  264. package/dist/services/datasource-introspection.service.js.map +1 -1
  265. package/dist/services/draft-publish-helper.service.d.ts +53 -0
  266. package/dist/services/draft-publish-helper.service.d.ts.map +1 -0
  267. package/dist/services/draft-publish-helper.service.js +402 -0
  268. package/dist/services/draft-publish-helper.service.js.map +1 -0
  269. package/dist/services/field-metadata.service.d.ts +2 -2
  270. package/dist/services/field-metadata.service.d.ts.map +1 -1
  271. package/dist/services/field-metadata.service.js +2 -1
  272. package/dist/services/field-metadata.service.js.map +1 -1
  273. package/dist/services/internationalisation-helper.service.d.ts +19 -0
  274. package/dist/services/internationalisation-helper.service.d.ts.map +1 -0
  275. package/dist/services/internationalisation-helper.service.js +107 -0
  276. package/dist/services/internationalisation-helper.service.js.map +1 -0
  277. package/dist/services/locale.service.d.ts +1 -1
  278. package/dist/services/media-storage.utils.d.ts +1 -0
  279. package/dist/services/media-storage.utils.d.ts.map +1 -1
  280. package/dist/services/media-storage.utils.js +12 -1
  281. package/dist/services/media-storage.utils.js.map +1 -1
  282. package/dist/services/media.service.d.ts +3 -2
  283. package/dist/services/media.service.d.ts.map +1 -1
  284. package/dist/services/media.service.js +44 -29
  285. package/dist/services/media.service.js.map +1 -1
  286. package/dist/services/metadata-validation.service.d.ts +7 -0
  287. package/dist/services/metadata-validation.service.d.ts.map +1 -0
  288. package/dist/services/metadata-validation.service.js +42 -0
  289. package/dist/services/metadata-validation.service.js.map +1 -0
  290. package/dist/services/model-metadata.service.d.ts.map +1 -1
  291. package/dist/services/model-metadata.service.js +2 -1
  292. package/dist/services/model-metadata.service.js.map +1 -1
  293. package/dist/services/module-metadata.service.d.ts.map +1 -1
  294. package/dist/services/module-metadata.service.js +2 -1
  295. package/dist/services/module-metadata.service.js.map +1 -1
  296. package/dist/services/mpin.service.d.ts +67 -0
  297. package/dist/services/mpin.service.d.ts.map +1 -0
  298. package/dist/services/mpin.service.js +282 -0
  299. package/dist/services/mpin.service.js.map +1 -0
  300. package/dist/services/object.utils.d.ts +2 -0
  301. package/dist/services/object.utils.d.ts.map +1 -0
  302. package/dist/services/object.utils.js +11 -0
  303. package/dist/services/object.utils.js.map +1 -0
  304. package/dist/services/refresh-token-ids-storage.service.d.ts +25 -6
  305. package/dist/services/refresh-token-ids-storage.service.d.ts.map +1 -1
  306. package/dist/services/refresh-token-ids-storage.service.js +80 -42
  307. package/dist/services/refresh-token-ids-storage.service.js.map +1 -1
  308. package/dist/services/setting.service.d.ts.map +1 -1
  309. package/dist/services/setting.service.js +2 -1
  310. package/dist/services/setting.service.js.map +1 -1
  311. package/dist/services/settings/default-settings-provider.service.d.ts +228 -12
  312. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  313. package/dist/services/settings/default-settings-provider.service.js +129 -6
  314. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  315. package/dist/services/user.service.d.ts +2 -2
  316. package/dist/services/user.service.d.ts.map +1 -1
  317. package/dist/services/user.service.js +9 -3
  318. package/dist/services/user.service.js.map +1 -1
  319. package/dist/services/view-metadata.service.d.ts +1 -2
  320. package/dist/services/view-metadata.service.d.ts.map +1 -1
  321. package/dist/services/view-metadata.service.js +3 -55
  322. package/dist/services/view-metadata.service.js.map +1 -1
  323. package/dist/services/workflow/nodes/execution-fail.node.d.ts +6 -0
  324. package/dist/services/workflow/nodes/execution-fail.node.d.ts.map +1 -0
  325. package/dist/services/workflow/nodes/execution-fail.node.js +81 -0
  326. package/dist/services/workflow/nodes/execution-fail.node.js.map +1 -0
  327. package/dist/services/workflow/nodes/for-each.node.d.ts +2 -0
  328. package/dist/services/workflow/nodes/for-each.node.d.ts.map +1 -1
  329. package/dist/services/workflow/nodes/for-each.node.js +114 -5
  330. package/dist/services/workflow/nodes/for-each.node.js.map +1 -1
  331. package/dist/services/workflow/nodes/if.node.d.ts.map +1 -1
  332. package/dist/services/workflow/nodes/if.node.js +7 -0
  333. package/dist/services/workflow/nodes/if.node.js.map +1 -1
  334. package/dist/services/workflow/nodes/log-write.node.d.ts.map +1 -1
  335. package/dist/services/workflow/nodes/log-write.node.js +2 -0
  336. package/dist/services/workflow/nodes/log-write.node.js.map +1 -1
  337. package/dist/services/workflow/nodes/loop-until.node.d.ts +12 -0
  338. package/dist/services/workflow/nodes/loop-until.node.d.ts.map +1 -0
  339. package/dist/services/workflow/nodes/loop-until.node.js +281 -0
  340. package/dist/services/workflow/nodes/loop-until.node.js.map +1 -0
  341. package/dist/services/workflow/nodes/parallel.node.d.ts.map +1 -1
  342. package/dist/services/workflow/nodes/parallel.node.js +7 -0
  343. package/dist/services/workflow/nodes/parallel.node.js.map +1 -1
  344. package/dist/services/workflow/nodes/sequential.node.d.ts.map +1 -1
  345. package/dist/services/workflow/nodes/sequential.node.js +7 -0
  346. package/dist/services/workflow/nodes/sequential.node.js.map +1 -1
  347. package/dist/services/workflow/nodes/switch.node.d.ts.map +1 -1
  348. package/dist/services/workflow/nodes/switch.node.js +7 -0
  349. package/dist/services/workflow/nodes/switch.node.js.map +1 -1
  350. package/dist/services/workflow/workflow-definition-validator.service.d.ts.map +1 -1
  351. package/dist/services/workflow/workflow-definition-validator.service.js +5 -2
  352. package/dist/services/workflow/workflow-definition-validator.service.js.map +1 -1
  353. package/dist/services/workflow/workflow-expression.service.d.ts.map +1 -1
  354. package/dist/services/workflow/workflow-expression.service.js +5 -0
  355. package/dist/services/workflow/workflow-expression.service.js.map +1 -1
  356. package/dist/services/workflow/workflow-node-registry.service.d.ts +2 -1
  357. package/dist/services/workflow/workflow-node-registry.service.d.ts.map +1 -1
  358. package/dist/services/workflow/workflow-node-registry.service.js +7 -0
  359. package/dist/services/workflow/workflow-node-registry.service.js.map +1 -1
  360. package/dist/services/workflow/workflow-runtime.service.d.ts +8 -0
  361. package/dist/services/workflow/workflow-runtime.service.d.ts.map +1 -1
  362. package/dist/services/workflow/workflow-runtime.service.js +197 -32
  363. package/dist/services/workflow/workflow-runtime.service.js.map +1 -1
  364. package/dist/services/workflow-definition.service.d.ts +1 -1
  365. package/dist/solid-core.module.d.ts +1 -3
  366. package/dist/solid-core.module.d.ts.map +1 -1
  367. package/dist/solid-core.module.js +22 -40
  368. package/dist/solid-core.module.js.map +1 -1
  369. package/dist/testing/adapters/ui/playwright-adapter.d.ts +5 -0
  370. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
  371. package/dist/testing/adapters/ui/playwright-adapter.js +17 -1
  372. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
  373. package/dist/testing/adapters/ui/ui.types.d.ts +2 -0
  374. package/dist/testing/adapters/ui/ui.types.d.ts.map +1 -1
  375. package/dist/testing/adapters/ui/ui.types.js.map +1 -1
  376. package/dist/testing/reporter/console-reporter.d.ts +3 -0
  377. package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
  378. package/dist/testing/reporter/console-reporter.js +2 -0
  379. package/dist/testing/reporter/console-reporter.js.map +1 -1
  380. package/dist/testing/reporter/progress-reporter.d.ts +64 -0
  381. package/dist/testing/reporter/progress-reporter.d.ts.map +1 -0
  382. package/dist/testing/reporter/progress-reporter.js +224 -0
  383. package/dist/testing/reporter/progress-reporter.js.map +1 -0
  384. package/dist/testing/reporter/reporter.types.d.ts +3 -0
  385. package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
  386. package/dist/testing/reporter/reporter.types.js.map +1 -1
  387. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
  388. package/dist/testing/runner/run-from-metadata.js +1 -0
  389. package/dist/testing/runner/run-from-metadata.js.map +1 -1
  390. package/dist/testing/steps/ui/actions.step.d.ts.map +1 -1
  391. package/dist/testing/steps/ui/actions.step.js +6 -2
  392. package/dist/testing/steps/ui/actions.step.js.map +1 -1
  393. package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
  394. package/dist/testing/steps/ui/assertions.step.js +11 -3
  395. package/dist/testing/steps/ui/assertions.step.js.map +1 -1
  396. package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
  397. package/dist/testing/steps/ui/form.step.js +9 -3
  398. package/dist/testing/steps/ui/form.step.js.map +1 -1
  399. package/dist/testing/steps/ui/manual.step.js +1 -1
  400. package/dist/testing/steps/ui/manual.step.js.map +1 -1
  401. package/dist/testing/steps/ui/navigation.step.d.ts.map +1 -1
  402. package/dist/testing/steps/ui/navigation.step.js +3 -1
  403. package/dist/testing/steps/ui/navigation.step.js.map +1 -1
  404. package/dist/theme/theme-registry.d.ts +14 -0
  405. package/dist/theme/theme-registry.d.ts.map +1 -0
  406. package/dist/theme/theme-registry.js +147 -0
  407. package/dist/theme/theme-registry.js.map +1 -0
  408. package/dist/types/workflow-dsl.types.d.ts +14 -0
  409. package/dist/types/workflow-dsl.types.d.ts.map +1 -1
  410. package/dist/types/workflow-dsl.types.js.map +1 -1
  411. package/package.json +2 -2
  412. package/postman/mpin.postman_collection.json +1045 -0
  413. package/src/commands/run-tests.command.ts +64 -4
  414. package/src/commands/seed.command.ts +19 -0
  415. package/src/config/cache.options.ts +9 -1
  416. package/src/constants/chatter-message.constants.ts +12 -0
  417. package/src/constants/draft-publish-fields.ts +5 -0
  418. package/src/constants/error-messages.ts +14 -0
  419. package/src/constants/media-file-types.ts +127 -0
  420. package/src/constants/success-messages.ts +5 -0
  421. package/src/constants/user.constants.ts +13 -0
  422. package/src/controllers/authentication.controller.ts +5 -2
  423. package/src/controllers/chatter-message.controller.ts +8 -0
  424. package/src/controllers/export-template.controller.ts +5 -3
  425. package/src/controllers/import-transaction.controller.ts +6 -6
  426. package/src/controllers/media.controller.ts +17 -6
  427. package/src/controllers/module-package.controller.ts +2 -3
  428. package/src/controllers/mpin-authentication.controller.ts +67 -0
  429. package/src/dtos/basic-filters.dto.ts +0 -4
  430. package/src/dtos/change-mpin.dto.ts +18 -0
  431. package/src/dtos/create-field-metadata.dto.ts +4 -9
  432. package/src/dtos/create-model-sequence.dto.ts +1 -1
  433. package/src/dtos/mpin-login.dto.ts +24 -0
  434. package/src/dtos/setup-mpin.dto.ts +51 -0
  435. package/src/entities/common.entity.ts +24 -0
  436. package/src/entities/dashboard-user-layout.entity.ts +2 -2
  437. package/src/entities/saved-filters.entity.ts +3 -3
  438. package/src/entities/user-device-credential.entity.ts +130 -0
  439. package/src/entities/user.entity.ts +53 -36
  440. package/src/entities/view-metadata.entity.ts +2 -2
  441. package/src/entities/workflow-execution-artifact.entity.ts +4 -3
  442. package/src/entities/workflow-execution-log.entity.ts +4 -3
  443. package/src/entities/workflow-execution.entity.ts +3 -2
  444. package/src/entities/workflow-secret.entity.ts +3 -2
  445. package/src/entities/workflow-step-execution.entity.ts +3 -2
  446. package/src/entities/workflow-trigger-execution.entity.ts +7 -6
  447. package/src/factories/mail.factory.ts +7 -1
  448. package/src/filters/http-exception.filter.ts +11 -1
  449. package/src/helpers/bootstrap.helper.ts +43 -6
  450. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +26 -12
  451. package/src/helpers/file-download.helper.ts +45 -0
  452. package/src/helpers/model-metadata-helper.service.ts +32 -1
  453. package/src/helpers/security.helper.ts +35 -8
  454. package/src/helpers/solid-core-error-codes-provider.service.ts +53 -0
  455. package/src/helpers/solid-microservice-adapter.service.ts +6 -1
  456. package/src/helpers/solid-registry.ts +1 -1
  457. package/src/helpers/typeorm-db-helper.ts +12 -1
  458. package/src/index.ts +10 -0
  459. package/src/interfaces/active-user-data.interface.ts +9 -0
  460. package/src/interfaces.ts +1 -0
  461. package/src/repository/user-device-credential.repository.ts +17 -0
  462. package/src/seeders/module-metadata-seeder.service.ts +61 -39
  463. package/src/seeders/module-test-data.service.ts +6 -0
  464. package/src/seeders/seed-data/solid-core-metadata.json +290 -78
  465. package/src/services/api-key.service.ts +13 -1
  466. package/src/services/authentication.service.ts +203 -41
  467. package/src/services/chatter-message.service.ts +124 -5
  468. package/src/services/crud-helper.service.ts +35 -50
  469. package/src/services/crud.service.ts +131 -105
  470. package/src/services/datasource-introspection.service.ts +5 -0
  471. package/src/services/draft-publish-helper.service.ts +581 -0
  472. package/src/services/field-metadata.service.ts +3 -2
  473. package/src/services/internationalisation-helper.service.ts +148 -0
  474. package/src/services/media-storage.utils.ts +26 -1
  475. package/src/services/media.service.ts +67 -36
  476. package/src/services/metadata-validation.service.ts +39 -0
  477. package/src/services/model-metadata.service.ts +4 -1
  478. package/src/services/module-metadata.service.ts +3 -1
  479. package/src/services/mpin.service.ts +447 -0
  480. package/src/services/object.utils.ts +10 -0
  481. package/src/services/refresh-token-ids-storage.service.ts +229 -90
  482. package/src/services/setting.service.ts +3 -1
  483. package/src/services/settings/default-settings-provider.service.ts +140 -6
  484. package/src/services/user.service.ts +18 -3
  485. package/src/services/view-metadata.service.ts +5 -145
  486. package/src/services/workflow/nodes/execution-fail.node.ts +82 -0
  487. package/src/services/workflow/nodes/for-each.node.ts +140 -6
  488. package/src/services/workflow/nodes/if.node.ts +7 -0
  489. package/src/services/workflow/nodes/log-write.node.ts +2 -0
  490. package/src/services/workflow/nodes/loop-until.node.ts +343 -0
  491. package/src/services/workflow/nodes/parallel.node.ts +7 -0
  492. package/src/services/workflow/nodes/sequential.node.ts +7 -0
  493. package/src/services/workflow/nodes/switch.node.ts +7 -0
  494. package/src/services/workflow/workflow-definition-validator.service.ts +5 -2
  495. package/src/services/workflow/workflow-expression.service.ts +5 -0
  496. package/src/services/workflow/workflow-node-registry.service.ts +11 -0
  497. package/src/services/workflow/workflow-runtime.service.ts +274 -39
  498. package/src/solid-core.module.ts +33 -15
  499. package/src/testing/README.md +75 -3
  500. package/src/testing/adapters/ui/playwright-adapter.ts +25 -0
  501. package/src/testing/adapters/ui/ui.types.ts +2 -0
  502. package/src/testing/reporter/console-reporter.ts +4 -0
  503. package/src/testing/reporter/progress-reporter.ts +251 -0
  504. package/src/testing/reporter/reporter.types.ts +3 -0
  505. package/src/testing/runner/run-from-metadata.ts +1 -0
  506. package/src/testing/steps/ui/actions.step.ts +8 -4
  507. package/src/testing/steps/ui/assertions.step.ts +18 -5
  508. package/src/testing/steps/ui/form.step.ts +16 -6
  509. package/src/testing/steps/ui/manual.step.ts +1 -1
  510. package/src/testing/steps/ui/navigation.step.ts +4 -2
  511. package/src/theme/theme-registry.ts +181 -0
  512. package/src/types/workflow-dsl.types.ts +43 -0
@@ -161,7 +161,11 @@ export class WorkflowRuntimeService {
161
161
  const execution = existingExecution
162
162
  ? await this.writer.startExecution(existingExecution, effectiveRequest)
163
163
  : await this.writer.createExecution(definition, effectiveRequest);
164
- const nodeCount = this.countNodes(definitionDsl.nodes);
164
+ const nodeCount = this.countNodes([
165
+ ...(definitionDsl.nodes ?? []),
166
+ ...(definitionDsl.errors ?? []),
167
+ ...(definitionDsl.finally ?? []),
168
+ ]);
165
169
  const outputs: Record<string, any> = {};
166
170
  const runtimeContext: WorkflowRuntimeContext = {
167
171
  execution,
@@ -175,26 +179,52 @@ export class WorkflowRuntimeService {
175
179
  },
176
180
  };
177
181
 
182
+ this.logger.log(
183
+ `Starting workflow execution ${execution.executionIdentifier} for ${definition.key} with ${nodeCount} node(s).`,
184
+ );
185
+ await this.writer.writeLog(execution, undefined, {
186
+ level: 'info',
187
+ eventType: 'execution.started',
188
+ message: `Workflow execution started for ${definition.key}.`,
189
+ metadata: {
190
+ executionIdentifier: execution.executionIdentifier,
191
+ workflowKey: definition.key,
192
+ triggerType: execution.triggerType,
193
+ nodeCount,
194
+ inputKeys: Object.keys(runtimeContext.input ?? {}),
195
+ variableKeys: Object.keys(runtimeContext.variables ?? {}),
196
+ },
197
+ }, this.nextLogSequence(runtimeContext));
198
+
199
+ let executionError: unknown;
200
+
178
201
  try {
179
- this.logger.log(
180
- `Starting workflow execution ${execution.executionIdentifier} for ${definition.key} with ${nodeCount} node(s).`,
181
- );
202
+ await this.runNodes(definitionDsl.nodes, runtimeContext);
203
+ } catch (error) {
204
+ executionError = error;
205
+ await this.runGlobalErrorHandlers(definitionDsl, runtimeContext, error);
206
+ }
207
+
208
+ try {
209
+ await this.runFinallyHandlers(definitionDsl, runtimeContext);
210
+ } catch (finallyError) {
182
211
  await this.writer.writeLog(execution, undefined, {
183
- level: 'info',
184
- eventType: 'execution.started',
185
- message: `Workflow execution started for ${definition.key}.`,
212
+ level: 'error',
213
+ eventType: 'finally.failed',
214
+ message: `Finally handler failed: ${this.errorMessage(finallyError)}.`,
215
+ context: this.summarizeError(finallyError),
186
216
  metadata: {
187
- executionIdentifier: execution.executionIdentifier,
188
- workflowKey: definition.key,
189
- triggerType: execution.triggerType,
190
- nodeCount,
191
- inputKeys: Object.keys(runtimeContext.input ?? {}),
192
- variableKeys: Object.keys(runtimeContext.variables ?? {}),
217
+ originalError: executionError
218
+ ? this.summarizeError(executionError)
219
+ : undefined,
193
220
  },
194
221
  }, this.nextLogSequence(runtimeContext));
222
+ if (!executionError) {
223
+ executionError = finallyError;
224
+ }
225
+ }
195
226
 
196
- await this.runNodes(definitionDsl.nodes, runtimeContext);
197
-
227
+ if (!executionError) {
198
228
  const completed = await this.writer.completeExecution(execution, outputs);
199
229
 
200
230
  this.logger.log(
@@ -212,26 +242,26 @@ export class WorkflowRuntimeService {
212
242
  }, this.nextLogSequence(runtimeContext));
213
243
 
214
244
  return this.toResponse(completed);
215
- } catch (error) {
216
- const failed = await this.writer.failExecution(execution, error);
245
+ }
217
246
 
218
- this.logger.error(
219
- `Failed workflow execution ${failed.executionIdentifier} for ${definition.key}: ${failed.errorSummary}`,
220
- error instanceof Error ? error.stack : undefined,
221
- );
222
- await this.writer.writeLog(failed, undefined, {
223
- level: 'error',
224
- eventType: 'execution.failed',
225
- message: failed.errorSummary,
226
- context: this.summarizeError(error),
227
- metadata: {
228
- executionIdentifier: failed.executionIdentifier,
229
- durationMs: failed.durationMs,
230
- },
231
- }, this.nextLogSequence(runtimeContext));
247
+ const failed = await this.writer.failExecution(execution, executionError);
232
248
 
233
- return this.toResponse(failed);
234
- }
249
+ this.logger.error(
250
+ `Failed workflow execution ${failed.executionIdentifier} for ${definition.key}: ${failed.errorSummary}`,
251
+ executionError instanceof Error ? executionError.stack : undefined,
252
+ );
253
+ await this.writer.writeLog(failed, undefined, {
254
+ level: 'error',
255
+ eventType: 'execution.failed',
256
+ message: failed.errorSummary,
257
+ context: this.summarizeError(executionError),
258
+ metadata: {
259
+ executionIdentifier: failed.executionIdentifier,
260
+ durationMs: failed.durationMs,
261
+ },
262
+ }, this.nextLogSequence(runtimeContext));
263
+
264
+ return this.toResponse(failed);
235
265
  }
236
266
 
237
267
  async getExecutionStatus(executionId: number): Promise<WorkflowExecutionResponse> {
@@ -363,17 +393,19 @@ export class WorkflowRuntimeService {
363
393
  nodes: WorkflowNodeDefinition[],
364
394
  context: WorkflowRuntimeContext,
365
395
  ): Promise<Record<string, any>> {
396
+ const nodeOutputs: Record<string, any> = {};
397
+
366
398
  for (const node of nodes ?? []) {
367
- await this.runNode(node, context);
399
+ nodeOutputs[node.id] = await this.runNode(node, context);
368
400
  }
369
401
 
370
- return context.outputs;
402
+ return nodeOutputs;
371
403
  }
372
404
 
373
405
  private async runNode(
374
406
  node: WorkflowNodeDefinition,
375
407
  context: WorkflowRuntimeContext,
376
- ): Promise<void> {
408
+ ): Promise<Record<string, any>> {
377
409
  const inputPayload = {
378
410
  configuration: node.configuration,
379
411
  input: context.input,
@@ -400,7 +432,7 @@ export class WorkflowRuntimeService {
400
432
  message: `Skipped disabled node ${node.id}.`,
401
433
  metadata: this.nodeLogMetadata(node, context, step),
402
434
  }, this.nextLogSequence(context));
403
- return;
435
+ return context.outputs[node.id];
404
436
  }
405
437
 
406
438
  try {
@@ -444,7 +476,7 @@ export class WorkflowRuntimeService {
444
476
  });
445
477
 
446
478
  const output = result.output ?? {};
447
- context.outputs[node.id] = output;
479
+ context.outputs[node.id] = this.getRuntimeContextOutput(node, output);
448
480
 
449
481
  for (const artifact of result.artifacts ?? []) {
450
482
  await this.writer.writeArtifact(context.execution, step, artifact);
@@ -472,6 +504,8 @@ export class WorkflowRuntimeService {
472
504
  artifactCount: result.artifacts?.length ?? 0,
473
505
  },
474
506
  }, this.nextLogSequence(context));
507
+
508
+ return output;
475
509
  } catch (error) {
476
510
  await this.writer.failStep(step, error);
477
511
 
@@ -486,7 +520,7 @@ export class WorkflowRuntimeService {
486
520
  context: this.summarizeError(error),
487
521
  metadata: this.nodeLogMetadata(node, context, step),
488
522
  }, this.nextLogSequence(context));
489
- return;
523
+ return context.outputs[node.id];
490
524
  }
491
525
 
492
526
  await this.writer.writeLog(context.execution, step, {
@@ -496,10 +530,158 @@ export class WorkflowRuntimeService {
496
530
  context: this.summarizeError(error),
497
531
  metadata: this.nodeLogMetadata(node, context, step),
498
532
  }, this.nextLogSequence(context));
533
+ await this.runLocalErrorHandlers(node, context, error);
499
534
  throw error;
500
535
  }
501
536
  }
502
537
 
538
+ private async runGlobalErrorHandlers(
539
+ definitionDsl: WorkflowDefinitionDsl,
540
+ context: WorkflowRuntimeContext,
541
+ error: unknown,
542
+ ): Promise<void> {
543
+ const errorNodes = definitionDsl.errors ?? [];
544
+ if (!errorNodes.length) {
545
+ return;
546
+ }
547
+
548
+ await this.runErrorHandlers(
549
+ errorNodes,
550
+ context,
551
+ error,
552
+ 'global',
553
+ undefined,
554
+ undefined,
555
+ );
556
+ }
557
+
558
+ private async runFinallyHandlers(
559
+ definitionDsl: WorkflowDefinitionDsl,
560
+ context: WorkflowRuntimeContext,
561
+ ): Promise<void> {
562
+ const finallyNodes = definitionDsl.finally ?? [];
563
+ if (!finallyNodes.length) {
564
+ return;
565
+ }
566
+
567
+ await this.writer.writeLog(context.execution, undefined, {
568
+ level: 'info',
569
+ eventType: 'finally.started',
570
+ message: 'Running workflow finally handlers.',
571
+ metadata: {
572
+ handlerNodeCount: finallyNodes.length,
573
+ },
574
+ }, this.nextLogSequence(context));
575
+
576
+ await this.runNodes(finallyNodes, context);
577
+
578
+ await this.writer.writeLog(context.execution, undefined, {
579
+ level: 'info',
580
+ eventType: 'finally.completed',
581
+ message: 'Workflow finally handlers completed.',
582
+ metadata: {
583
+ handlerNodeCount: finallyNodes.length,
584
+ },
585
+ }, this.nextLogSequence(context));
586
+ }
587
+
588
+ private async runLocalErrorHandlers(
589
+ node: WorkflowNodeDefinition,
590
+ context: WorkflowRuntimeContext,
591
+ error: unknown,
592
+ ): Promise<void> {
593
+ const errorNodes = node.errors ?? [];
594
+ if (!errorNodes.length) {
595
+ return;
596
+ }
597
+
598
+ await this.runErrorHandlers(
599
+ errorNodes,
600
+ context,
601
+ error,
602
+ 'local',
603
+ node.id,
604
+ context.stepExecution?.stepExecutionKey,
605
+ );
606
+ }
607
+
608
+ private async runErrorHandlers(
609
+ errorNodes: WorkflowNodeDefinition[],
610
+ context: WorkflowRuntimeContext,
611
+ error: unknown,
612
+ scope: 'global' | 'local',
613
+ sourceNodeId?: string,
614
+ sourceStepExecutionKey?: string,
615
+ ): Promise<void> {
616
+ const errorContext = this.buildErrorContext(error, sourceNodeId, sourceStepExecutionKey);
617
+
618
+ await this.writer.writeLog(context.execution, undefined, {
619
+ level: 'warn',
620
+ eventType: `error-handler.${scope}.started`,
621
+ message:
622
+ scope === 'global'
623
+ ? 'Running workflow-level error handlers.'
624
+ : `Running local error handlers for node ${sourceNodeId}.`,
625
+ context: errorContext,
626
+ metadata: {
627
+ sourceNodeId,
628
+ sourceStepExecutionKey,
629
+ handlerNodeCount: errorNodes.length,
630
+ },
631
+ }, this.nextLogSequence(context));
632
+
633
+ try {
634
+ await this.runNodes(errorNodes, {
635
+ ...context,
636
+ error: errorContext,
637
+ parentNodeId: sourceNodeId ?? context.parentNodeId,
638
+ parentStepExecutionKey:
639
+ sourceStepExecutionKey ?? context.parentStepExecutionKey,
640
+ });
641
+ } catch (handlerError) {
642
+ await this.writer.writeLog(context.execution, undefined, {
643
+ level: 'error',
644
+ eventType: `error-handler.${scope}.failed`,
645
+ message: `Error handler failed: ${this.errorMessage(handlerError)}.`,
646
+ context: this.summarizeError(handlerError),
647
+ metadata: {
648
+ originalError: errorContext,
649
+ sourceNodeId,
650
+ sourceStepExecutionKey,
651
+ },
652
+ }, this.nextLogSequence(context));
653
+ return;
654
+ }
655
+
656
+ await this.writer.writeLog(context.execution, undefined, {
657
+ level: 'info',
658
+ eventType: `error-handler.${scope}.completed`,
659
+ message:
660
+ scope === 'global'
661
+ ? 'Workflow-level error handlers completed.'
662
+ : `Local error handlers completed for node ${sourceNodeId}.`,
663
+ context: errorContext,
664
+ metadata: {
665
+ sourceNodeId,
666
+ sourceStepExecutionKey,
667
+ },
668
+ }, this.nextLogSequence(context));
669
+ }
670
+
671
+ private buildErrorContext(
672
+ error: unknown,
673
+ nodeId?: string,
674
+ stepExecutionKey?: string,
675
+ ): Record<string, any> {
676
+ const summary = this.summarizeError(error);
677
+ return {
678
+ ...summary,
679
+ message: this.errorMessage(error),
680
+ nodeId,
681
+ stepExecutionKey,
682
+ };
683
+ }
684
+
503
685
  private assertDefinitionYaml(value: any): WorkflowDefinitionDsl {
504
686
  if (!value || typeof value !== 'string') {
505
687
  throw new BadRequestException(
@@ -627,6 +809,7 @@ export class WorkflowRuntimeService {
627
809
  ...(node.then ?? []),
628
810
  ...(node.else ?? []),
629
811
  ...(node.defaults ?? []),
812
+ ...(node.errors ?? []),
630
813
  ...Object.values(node.cases ?? {}).flat(),
631
814
  ];
632
815
 
@@ -660,6 +843,58 @@ export class WorkflowRuntimeService {
660
843
  };
661
844
  }
662
845
 
846
+ private getRuntimeContextOutput(
847
+ node: WorkflowNodeDefinition,
848
+ output: Record<string, any>,
849
+ ): Record<string, any> {
850
+ const hiddenOutputPaths =
851
+ this.registry
852
+ .getMetadata(node.type)
853
+ .authoring?.outputs?.filter(
854
+ (definition) => definition.includeInRuntimeContext === false,
855
+ )
856
+ .map((definition) => definition.path ?? definition.key)
857
+ .filter(Boolean) ?? [];
858
+
859
+ if (!hiddenOutputPaths.length || !output || typeof output !== 'object') {
860
+ return output;
861
+ }
862
+
863
+ const runtimeOutput = this.cloneOutput(output);
864
+ hiddenOutputPaths.forEach((path) => {
865
+ this.deletePath(runtimeOutput, path);
866
+ });
867
+
868
+ return runtimeOutput;
869
+ }
870
+
871
+ private cloneOutput(output: Record<string, any>): Record<string, any> {
872
+ if (typeof structuredClone === 'function') {
873
+ return structuredClone(output);
874
+ }
875
+
876
+ return JSON.parse(JSON.stringify(output));
877
+ }
878
+
879
+ private deletePath(target: Record<string, any>, path: string) {
880
+ const parts = path.split('.').filter(Boolean);
881
+ if (!parts.length) {
882
+ return;
883
+ }
884
+
885
+ let cursor: any = target;
886
+ for (let index = 0; index < parts.length - 1; index += 1) {
887
+ cursor = cursor?.[parts[index]];
888
+ if (!cursor || typeof cursor !== 'object') {
889
+ return;
890
+ }
891
+ }
892
+
893
+ if (cursor && typeof cursor === 'object') {
894
+ delete cursor[parts[parts.length - 1]];
895
+ }
896
+ }
897
+
663
898
  private summarizeValue(value: any): any {
664
899
  if (Array.isArray(value)) {
665
900
  return {
@@ -1,6 +1,5 @@
1
1
  import "multer";
2
- import { Global, MiddlewareConsumer, Module, NestModule } from "@nestjs/common";
3
- import * as express from "express";
2
+ import { Global, Module } from "@nestjs/common";
4
3
  import { ConfigModule, ConfigService } from "@nestjs/config";
5
4
  import {
6
5
  APP_FILTER,
@@ -38,6 +37,8 @@ import { MqDashboardQueueNameVariableOptionsProvider } from "./services/selectio
38
37
  import { PseudoForeignKeySelectionProvider } from "./services/selection-providers/pseudo-foreign-key-selection-provider.service";
39
38
  import { ModuleMetadataSeederService } from "./seeders/module-metadata-seeder.service";
40
39
  import { ModuleTestDataService } from "./seeders/module-test-data.service";
40
+ import { DraftPublishHelperService } from "./services/draft-publish-helper.service";
41
+ import { InternationalisationHelperService } from "./services/internationalisation-helper.service";
41
42
  import { CrudHelperService } from "./services/crud-helper.service";
42
43
  import { DatasourceManagementService } from "./services/datasource-management.service";
43
44
  import { DatasourceIntrospectionService } from "./services/datasource-introspection.service";
@@ -56,10 +57,10 @@ import { ModulePackageService } from "./services/module-package.service";
56
57
  import { SolidIntrospectService } from "./services/solid-introspect.service";
57
58
  // import { ListOfComputedFieldProvider } from './providers/list-of-computed-field-provider.service';
58
59
  import { ServeStaticModule } from "@nestjs/serve-static";
59
- import { extname, join } from "path";
60
+ import { basename, join } from "path";
60
61
  import { RefreshModelCommand } from "./commands/refresh-model.command";
61
62
  import { MediaController } from "./controllers/media.controller";
62
- import { INLINE_SAFE_EXTENSIONS } from "./constants/media-file-types";
63
+ import { getLowercaseFileExtension, INLINE_SAFE_EXTENSIONS } from "./constants/media-file-types";
63
64
 
64
65
  import { RefreshModuleCommand } from "./commands/refresh-module.command";
65
66
  import { ModelMetadataSubscriber } from "./subscribers/model-metadata.subscriber";
@@ -96,6 +97,7 @@ import { GoogleAuthenticationController } from "./controllers/google-authenticat
96
97
  import { MenuItemMetadataController } from "./controllers/menu-item-metadata.controller";
97
98
  import { MqMessageQueueController } from "./controllers/mq-message-queue.controller";
98
99
  import { MqMessageController } from "./controllers/mq-message.controller";
100
+ import { MpinAuthenticationController } from "./controllers/mpin-authentication.controller";
99
101
  import { OTPAuthenticationController } from "./controllers/otp-authentication.controller";
100
102
  import { ServiceController } from "./controllers/service.controller";
101
103
  import { SmsTemplateController } from "./controllers/sms-template.controller";
@@ -165,8 +167,10 @@ import { TwilioSmsQueueSubscriberRedis } from "./jobs/redis/twilio-sms-subscribe
165
167
  import { UserRegistrationListener } from "./listeners/user-registration.listener";
166
168
  import { GoogleOauthStrategy } from "./passport-strategies/google-oauth.strategy";
167
169
  import { ApiKeyService } from "./services/api-key.service";
170
+ import { MpinService } from "./services/mpin.service";
168
171
  import { ActiveSessionStorageService } from "./services/active-session-storage.service";
169
172
  import { AuthenticationService } from "./services/authentication.service";
173
+ import { MetadataValidationService } from "./services/metadata-validation.service";
170
174
  import { BcryptService } from "./services/bcrypt.service";
171
175
  import { UuidExternalIdEntityComputedFieldProvider } from "./services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service";
172
176
  import { UuidExternalIdComputedFieldProvider } from "./services/computed-fields/uuid-external-id-computed-field-provider.service";
@@ -244,6 +248,7 @@ import { Setting } from './entities/setting.entity';
244
248
  import { UserActivityHistory } from './entities/user-activity-history.entity';
245
249
  import { UserViewMetadata } from './entities/user-view-metadata.entity';
246
250
  import { UserApiKey } from './entities/user-api-key.entity';
251
+ import { UserDeviceCredential } from './entities/user-device-credential.entity';
247
252
  import { User } from './entities/user.entity';
248
253
  import { HttpExceptionFilter } from './filters/http-exception.filter';
249
254
  import { ModelMetadataHelperService } from './helpers/model-metadata-helper.service';
@@ -316,6 +321,7 @@ import { SmsTemplateRepository } from './repository/sms-template.repository';
316
321
  import { UserActivityHistoryRepository } from './repository/user-activity-history.repository';
317
322
  import { UserViewMetadataRepository } from './repository/user-view-metadata.repository';
318
323
  import { UserApiKeyRepository } from './repository/user-api-key.repository';
324
+ import { UserDeviceCredentialRepository } from './repository/user-device-credential.repository';
319
325
  import { UserRepository } from './repository/user.repository';
320
326
  import { ViewMetadataRepository } from './repository/view-metadata.repository';
321
327
  import { PermissionMetadataSeederService } from './seeders/permission-metadata-seeder.service';
@@ -441,10 +447,12 @@ import { WorkflowInvocationService } from './services/workflow/workflow-invocati
441
447
  import { WorkflowNodeRegistryService } from './services/workflow/workflow-node-registry.service';
442
448
  import { WorkflowRuntimeService } from './services/workflow/workflow-runtime.service';
443
449
  import { WorkflowScheduledTriggerJobService } from './services/workflow/workflow-scheduled-trigger.job';
450
+ import { ExecutionFailNode } from './services/workflow/nodes/execution-fail.node';
444
451
  import { ForEachNode } from './services/workflow/nodes/for-each.node';
445
452
  import { HttpRequestNode } from './services/workflow/nodes/http-request.node';
446
453
  import { IfNode } from './services/workflow/nodes/if.node';
447
454
  import { LogWriteNode } from './services/workflow/nodes/log-write.node';
455
+ import { LoopUntilNode } from './services/workflow/nodes/loop-until.node';
448
456
  import { ParallelNode } from './services/workflow/nodes/parallel.node';
449
457
  import { RuntimePythonNode } from './services/workflow/nodes/runtime-python.node';
450
458
  import { SequentialNode } from './services/workflow/nodes/sequential.node';
@@ -496,6 +504,7 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
496
504
  SmsTemplate,
497
505
  User,
498
506
  UserApiKey,
507
+ UserDeviceCredential,
499
508
  UserActivityHistory,
500
509
  UserViewMetadata,
501
510
  ViewMetadata,
@@ -533,7 +542,11 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
533
542
  // else (including svg, html, and any other uploaded file) is forced to download
534
543
  // rather than be displayed/executed by the browser, regardless of what mimetype or
535
544
  // extension it was uploaded with.
536
- if (!INLINE_SAFE_EXTENSIONS.has(extname(path).toLowerCase().replace(/^\./, ''))) {
545
+ // basename first: getLowercaseFileExtension takes a file name, not a path, so a
546
+ // directory containing a dot must not be mistaken for the extension. An
547
+ // extensionless file yields undefined, which is not inline-safe - so it correctly
548
+ // falls through to the forced-download branch.
549
+ if (!INLINE_SAFE_EXTENSIONS.has(getLowercaseFileExtension(basename(path)) ?? '')) {
537
550
  res.setHeader("Content-Type", "application/octet-stream");
538
551
  res.setHeader("Content-Disposition", "attachment");
539
552
  }
@@ -587,6 +600,7 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
587
600
  GupshupWebhookController,
588
601
  MetaCloudWhatsappWebhookController,
589
602
  OTPAuthenticationController,
603
+ MpinAuthenticationController,
590
604
  PermissionMetadataController,
591
605
  RoleMetadataController,
592
606
  SavedFiltersController,
@@ -642,6 +656,7 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
642
656
  ModuleMetadataExplorerService,
643
657
  ModuleMetadataHelperService,
644
658
  ModulePackageService,
659
+ MetadataValidationService,
645
660
  ModelMetadataService,
646
661
  ModelMetadataHelperService,
647
662
  FieldMetadataService,
@@ -654,6 +669,8 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
654
669
  InfoService,
655
670
  SolidIntrospectService,
656
671
  DiscoveryService,
672
+ DraftPublishHelperService,
673
+ InternationalisationHelperService,
657
674
  CrudHelperService,
658
675
  CRUDService,
659
676
  Reflector,
@@ -749,6 +766,7 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
749
766
  ApiKeyGuard,
750
767
  MediaSignedUrlGuard,
751
768
  ApiKeyService,
769
+ MpinService,
752
770
  ActiveSessionStorageService,
753
771
  AuthenticationService,
754
772
  GoogleAuthenticationController,
@@ -818,6 +836,7 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
818
836
  PermissionMetadataSeederService,
819
837
  UserService,
820
838
  UserApiKeyRepository,
839
+ UserDeviceCredentialRepository,
821
840
  UserRepository,
822
841
  SettingService,
823
842
  ConcatComputedFieldProvider,
@@ -947,10 +966,12 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
947
966
  WorkflowDefinitionValidatorService,
948
967
  WorkflowNodeRegistryService,
949
968
  WorkflowScheduledTriggerJobService,
969
+ ExecutionFailNode,
950
970
  LogWriteNode,
951
971
  HttpRequestNode,
952
972
  IfNode,
953
973
  ForEachNode,
974
+ LoopUntilNode,
954
975
  ParallelNode,
955
976
  RuntimePythonNode,
956
977
  SequentialNode,
@@ -972,6 +993,8 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
972
993
  ChatterMessageRepository,
973
994
  ChatterMessageService,
974
995
  ConfigModule,
996
+ DraftPublishHelperService,
997
+ InternationalisationHelperService,
975
998
  CrudHelperService,
976
999
  CRUDService,
977
1000
  CsvService,
@@ -994,6 +1017,7 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
994
1017
  SmsFactory,
995
1018
  MediaService,
996
1019
  MediaStorageProviderMetadataService,
1020
+ MetadataValidationService,
997
1021
  ModelMetadataHelperService,
998
1022
  ModelMetadataService,
999
1023
  ModuleMetadataService,
@@ -1033,13 +1057,7 @@ import { SwitchNode } from './services/workflow/nodes/switch.node';
1033
1057
  WorkflowExpressionService,
1034
1058
  ],
1035
1059
  })
1036
- export class SolidCoreModule implements NestModule {
1037
- configure(consumer: MiddlewareConsumer) {
1038
- consumer
1039
- .apply(
1040
- express.json({ limit: "10mb" }),
1041
- express.urlencoded({ limit: "10mb", extended: true }),
1042
- )
1043
- .forRoutes("*");
1044
- }
1045
- }
1060
+ // Body-size limits live in bootstrapSolidApp (see SolidBootstrapOptions.bodyLimit).
1061
+ // They cannot be applied here: module middleware is registered in registerRouter(),
1062
+ // which runs after Nest's own parser middleware, so anything set here never takes effect.
1063
+ export class SolidCoreModule {}