@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
package/README.md CHANGED
@@ -160,6 +160,25 @@ export class AppModule {}
160
160
 
161
161
  For full configuration options — environment variables, storage providers, queue setup, and OAuth credentials — see the [Developer Documentation](https://docs.solidxai.com/docs).
162
162
 
163
+ ### Security headers and iframe embedding
164
+
165
+ `bootstrapSolidApp` applies security headers through Helmet. The `frame-ancestors` CSP directive controls which origins are allowed to embed responses from the API in an iframe. This is relevant when rendering PDFs or other protected resources in the browser's built-in viewer.
166
+
167
+ By default, the bootstrap helper allows the current origin and local development origins (`localhost`, `127.0.0.1`, and `::1`) over HTTP or HTTPS on any port. This supports common setups where the UI and API run on different local ports, such as `localhost:3001` embedding a PDF served by `localhost:3000`.
168
+
169
+ To customize the allowlist, pass `security.frameAncestors` when bootstrapping the API. The configured list replaces the default list, so include every origin that should be allowed:
170
+
171
+ ```typescript
172
+ bootstrapSolidApp(() => AppModule.forRoot(), {
173
+ swagger: { title: 'My API', description: 'My API description' },
174
+ security: {
175
+ frameAncestors: ["'self'", 'https://portal.example.com'],
176
+ },
177
+ });
178
+ ```
179
+
180
+ For a fully restricted application, use `frameAncestors: ["'none'"]`. When cross-origin ancestors are allowed, `@solidxai/core` omits the legacy `X-Frame-Options` header because that header cannot express an origin allowlist; the CSP directive remains the source of truth.
181
+
163
182
 
164
183
  ## Technology Stack
165
184
 
@@ -1,5 +1,6 @@
1
1
  import { CommandRunner } from 'nest-commander';
2
2
  import { ModuleMetadataHelperService } from '../helpers/module-metadata-helper.service';
3
+ import { SettingService } from '../services/setting.service';
3
4
  interface TestRunCommandOptions {
4
5
  module?: string;
5
6
  moduleName?: string;
@@ -10,16 +11,20 @@ interface TestRunCommandOptions {
10
11
  apiBaseUrl?: string;
11
12
  uiBaseUrl?: string;
12
13
  headless?: boolean;
14
+ uiTimeoutMs?: number;
15
+ uiNavigationTimeoutMs?: number;
13
16
  timeoutMs?: number;
14
17
  retries?: number;
15
18
  listSpecs?: boolean;
16
19
  printApiLogs?: boolean;
17
20
  runName?: string;
21
+ progress?: boolean;
18
22
  }
19
23
  export declare class TestRunCommand extends CommandRunner {
20
24
  private readonly moduleMetadataHelperService;
25
+ private readonly settingService;
21
26
  private readonly logger;
22
- constructor(moduleMetadataHelperService: ModuleMetadataHelperService);
27
+ constructor(moduleMetadataHelperService: ModuleMetadataHelperService, settingService: SettingService);
23
28
  run(passedParam: string[], options?: TestRunCommandOptions): Promise<void>;
24
29
  parseModule(val: string): string;
25
30
  parseScenarioIds(val: string): string;
@@ -31,9 +36,12 @@ export declare class TestRunCommand extends CommandRunner {
31
36
  parseApiBaseUrl(val: string): string;
32
37
  parseUiBaseUrl(val: string): string;
33
38
  parseHeadless(val: string): boolean;
39
+ parseUiTimeoutMs(val: string): number;
40
+ parseUiNavigationTimeoutMs(val: string): number;
34
41
  parseTimeoutMs(val: string): number;
35
42
  parseRetries(val: string): number;
36
43
  parseRunName(val: string): string;
44
+ parseNoProgress(): boolean;
37
45
  }
38
46
  export {};
39
47
  //# sourceMappingURL=run-tests.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-tests.command.d.ts","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAOzF,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAIa,cAAe,SAAQ,aAAa;IAI7C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAH9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAGvC,2BAA2B,EAAE,2BAA2B;IAKrE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoGhF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUxC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASnC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGlC"}
1
+ {"version":3,"file":"run-tests.command.d.ts","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAOzF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAIa,cAAe,SAAQ,aAAa;IAI7C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAGvC,2BAA2B,EAAE,2BAA2B,EACxD,cAAc,EAAE,cAAc;IAK3C,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoHhF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUxC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUnC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAUrC,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS/C,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASjC,eAAe,IAAI,OAAO;CAG3B"}
@@ -49,13 +49,16 @@ const nest_commander_1 = require("nest-commander");
49
49
  const path = __importStar(require("path"));
50
50
  const module_metadata_helper_service_1 = require("../helpers/module-metadata-helper.service");
51
51
  const console_reporter_1 = require("../testing/reporter/console-reporter");
52
+ const progress_reporter_1 = require("../testing/reporter/progress-reporter");
52
53
  const webhook_reporter_1 = require("../testing/reporter/webhook-reporter");
53
54
  const run_from_metadata_1 = require("../testing/runner/run-from-metadata");
54
55
  const spec_registry_1 = require("../testing/core/spec-registry");
56
+ const setting_service_1 = require("../services/setting.service");
55
57
  let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_commander_1.CommandRunner {
56
- constructor(moduleMetadataHelperService) {
58
+ constructor(moduleMetadataHelperService, settingService) {
57
59
  super();
58
60
  this.moduleMetadataHelperService = moduleMetadataHelperService;
61
+ this.settingService = settingService;
59
62
  this.logger = new common_1.Logger(TestRunCommand_1.name);
60
63
  }
61
64
  async run(passedParam, options) {
@@ -102,12 +105,21 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
102
105
  const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;
103
106
  const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;
104
107
  const headless = options?.headless ?? true;
108
+ const uiTimeoutMs = options?.uiTimeoutMs
109
+ ?? toPositiveNumber(process.env.UI_TIMEOUT_MS)
110
+ ?? toPositiveNumber(this.settingService.getConfigValue('uiTestDefaultTimeoutMs'));
111
+ const uiNavigationTimeoutMs = options?.uiNavigationTimeoutMs
112
+ ?? toPositiveNumber(process.env.UI_NAVIGATION_TIMEOUT_MS)
113
+ ?? toPositiveNumber(this.settingService.getConfigValue('uiTestNavigationTimeoutMs'));
105
114
  const printApiLogs = options?.printApiLogs ?? false;
106
115
  const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;
107
116
  const runName = options?.runName ?? `run-${Date.now()}`;
108
- const reporter = webhookUrl
117
+ const baseReporter = webhookUrl
109
118
  ? new webhook_reporter_1.WebhookReporter(webhookUrl, runName)
110
119
  : new console_reporter_1.ConsoleReporter();
120
+ const reporter = options?.progress === false
121
+ ? baseReporter
122
+ : new progress_reporter_1.ProgressReporter(baseReporter);
111
123
  try {
112
124
  await (0, run_from_metadata_1.runFromMetadata)({
113
125
  metadata: metadata,
@@ -116,7 +128,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
116
128
  skipScenarioIds,
117
129
  reporter,
118
130
  api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,
119
- ui: { baseUrl: uiBaseUrl, headless },
131
+ ui: {
132
+ baseUrl: uiBaseUrl,
133
+ headless,
134
+ defaultTimeoutMs: uiTimeoutMs,
135
+ navigationTimeoutMs: uiNavigationTimeoutMs,
136
+ },
120
137
  defaults: {
121
138
  timeoutMs: options?.timeoutMs,
122
139
  retries: options?.retries,
@@ -133,8 +150,8 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
133
150
  process.exitCode = 1;
134
151
  }
135
152
  finally {
136
- if (reporter instanceof webhook_reporter_1.WebhookReporter) {
137
- await reporter.flush(Number(process.exitCode ?? 0));
153
+ if (baseReporter instanceof webhook_reporter_1.WebhookReporter) {
154
+ await baseReporter.flush(Number(process.exitCode ?? 0));
138
155
  }
139
156
  }
140
157
  return;
@@ -180,6 +197,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
180
197
  parseHeadless(val) {
181
198
  return val === 'false' ? false : true;
182
199
  }
200
+ parseUiTimeoutMs(val) {
201
+ return Number(val);
202
+ }
203
+ parseUiNavigationTimeoutMs(val) {
204
+ return Number(val);
205
+ }
183
206
  parseTimeoutMs(val) {
184
207
  return Number(val);
185
208
  }
@@ -189,6 +212,9 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
189
212
  parseRunName(val) {
190
213
  return val;
191
214
  }
215
+ parseNoProgress() {
216
+ return false;
217
+ }
192
218
  };
193
219
  exports.TestRunCommand = TestRunCommand;
194
220
  __decorate([
@@ -291,6 +317,26 @@ __decorate([
291
317
  __metadata("design:paramtypes", [String]),
292
318
  __metadata("design:returntype", Boolean)
293
319
  ], TestRunCommand.prototype, "parseHeadless", null);
320
+ __decorate([
321
+ (0, nest_commander_1.Option)({
322
+ flags: '--ui-timeout-ms [number]',
323
+ description: 'Default timeout in ms for UI steps (waits, clicks, fills). Defaults to process.env.UI_TIMEOUT_MS, then the uiTestDefaultTimeoutMs setting, then 30000.',
324
+ required: false,
325
+ }),
326
+ __metadata("design:type", Function),
327
+ __metadata("design:paramtypes", [String]),
328
+ __metadata("design:returntype", Number)
329
+ ], TestRunCommand.prototype, "parseUiTimeoutMs", null);
330
+ __decorate([
331
+ (0, nest_commander_1.Option)({
332
+ flags: '--ui-navigation-timeout-ms [number]',
333
+ description: 'Default timeout in ms for ui.goto navigation. Defaults to process.env.UI_NAVIGATION_TIMEOUT_MS, then the uiTestNavigationTimeoutMs setting, then --ui-timeout-ms.',
334
+ required: false,
335
+ }),
336
+ __metadata("design:type", Function),
337
+ __metadata("design:paramtypes", [String]),
338
+ __metadata("design:returntype", Number)
339
+ ], TestRunCommand.prototype, "parseUiNavigationTimeoutMs", null);
294
340
  __decorate([
295
341
  (0, nest_commander_1.Option)({
296
342
  flags: '--timeout-ms [number]',
@@ -321,12 +367,23 @@ __decorate([
321
367
  __metadata("design:paramtypes", [String]),
322
368
  __metadata("design:returntype", String)
323
369
  ], TestRunCommand.prototype, "parseRunName", null);
370
+ __decorate([
371
+ (0, nest_commander_1.Option)({
372
+ flags: '--no-progress',
373
+ description: 'Disable the interactive test progress footer.',
374
+ required: false,
375
+ }),
376
+ __metadata("design:type", Function),
377
+ __metadata("design:paramtypes", []),
378
+ __metadata("design:returntype", Boolean)
379
+ ], TestRunCommand.prototype, "parseNoProgress", null);
324
380
  exports.TestRunCommand = TestRunCommand = TestRunCommand_1 = __decorate([
325
381
  (0, nest_commander_1.SubCommand)({
326
382
  name: 'run',
327
383
  description: 'Run testing scenarios from module metadata.',
328
384
  }),
329
- __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService])
385
+ __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService,
386
+ setting_service_1.SettingService])
330
387
  ], TestRunCommand);
331
388
  function splitCsv(value) {
332
389
  if (!value)
@@ -337,6 +394,12 @@ function splitCsv(value) {
337
394
  .filter(Boolean);
338
395
  return items.length ? items : undefined;
339
396
  }
397
+ function toPositiveNumber(value) {
398
+ if (value === null || value === undefined || value === '')
399
+ return undefined;
400
+ const parsed = Number(value);
401
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
402
+ }
340
403
  function resolveSpecPath(entry, metadataPath) {
341
404
  if (path.isAbsolute(entry)) {
342
405
  return entry;
@@ -1 +1 @@
1
- {"version":3,"file":"run-tests.command.js","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAmE;AACnE,2CAA6B;AAC7B,8FAAyF;AACzF,2EAAwE;AACxE,2EAAwE;AACxE,2EAAuE;AAEvE,iEAA8D;AAuBvD,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,8BAAa;IAG/C,YACmB,2BAAwD;QAEzE,KAAK,EAAE,CAAC;QAFS,gCAA2B,GAA3B,2BAA2B,CAA6B;QAH1D,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAM1D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA+B;QAC9D,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;gBAC7F,OAAO;YACT,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAClG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,UAAU,EAAE,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;YACrG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,YAAY,EAAE,CAAC,CAAC;gBACjF,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;gBACxD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;gBACxB,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,IAAI,4BAAY,EAAE,CAAC;gBACpC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACvB,qBAAqB,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAC7D,CAAC;gBACD,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,YAAY,EAAE,CAAC,CAAC;gBAC7E,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACnD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAE3D,MAAM,YAAY,GAAG,OAAO,EAAE,QAAQ,IAAI,SAAS,CAAC;YACpD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,YAAY,kBAAkB,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/D,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACtE,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;YAC3C,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,KAAK,CAAC;YAEpD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACpD,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,UAAU;gBACzB,CAAC,CAAC,IAAI,kCAAe,CAAC,UAAU,EAAE,OAAO,CAAC;gBAC1C,CAAC,CAAC,IAAI,kCAAe,EAAE,CAAC;YAE1B,IAAI,CAAC;gBACH,MAAM,IAAA,mCAAe,EAAC;oBACpB,QAAQ,EAAE,QAA2B;oBACrC,WAAW;oBACX,WAAW;oBACX,eAAe;oBACf,QAAQ;oBACR,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;oBACrD,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE;oBACpC,QAAQ,EAAE;wBACR,SAAS,EAAE,OAAO,EAAE,SAAS;wBAC7B,OAAO,EAAE,OAAO,EAAE,OAAO;qBAC1B;oBACD,OAAO,EAAE,EAAE,YAAY,EAAE;oBACzB,KAAK,EAAE,WAAW,CAAC,MAAM;wBACvB,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC;wBAC1E,CAAC,CAAC,SAAS;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;oBAAS,CAAC;gBACT,IAAI,QAAQ,YAAY,kCAAe,EAAE,CAAC;oBACxC,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC;IAOD,WAAW,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,gBAAgB,CAAC,GAAW;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,gBAAgB,CAAC,GAAW;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,oBAAoB,CAAC,GAAW;QAC9B,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,cAAc,CAAC,GAAY;QACzB,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAOD,iBAAiB,CAAC,GAAY;QAC5B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAOD,eAAe,CAAC,GAAW;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,cAAc,CAAC,GAAW;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAOD,cAAc,CAAC,GAAW;QACxB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAOD,YAAY,CAAC,GAAW;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAOD,YAAY,CAAC,GAAW;QACtB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA9NY,wCAAc;AA6GzB;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;iDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;sDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;sDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;0DAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;mDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,2BAA2B;QAClC,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;oDAID;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,6DAA6D;QAC1E,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;uDAID;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,kDAAkD;QAC/D,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;qDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;oDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,kDAAkD;QAC/D,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;mDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;oDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;kDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,4DAA4D;QACzE,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;kDAGD;yBA7NU,cAAc;IAJ1B,IAAA,2BAAU,EAAC;QACV,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,6CAA6C;KAC3D,CAAC;qCAKgD,4DAA2B;GAJhE,cAAc,CA8N1B;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,YAAoB;IAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAiB,EAAE,YAAoB,EAAE,QAAsB;IAC5F,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtD,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YAEH,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,oCAAoC,KAAK,kBAAkB,QAAQ,MAAM,OAAO,EAAE,CACnF,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,EAAE,iBAAiB,IAAI,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC;QAC/D,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,wFAAwF,CACnH,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AACD,SAAS,aAAa,CAAC,OAAiB;IACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzB,CAAC;AACH,CAAC","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { SubCommand, CommandRunner, Option } from 'nest-commander';\nimport * as path from 'path';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ConsoleReporter } from 'src/testing/reporter/console-reporter';\nimport { WebhookReporter } from 'src/testing/reporter/webhook-reporter';\nimport { runFromMetadata } from 'src/testing/runner/run-from-metadata';\nimport type { TestingMetadata } from 'src/testing/contracts/testing-metadata.types';\nimport { SpecRegistry } from 'src/testing/core/spec-registry';\n\ninterface TestRunCommandOptions {\n module?: string;\n moduleName?: string;\n scenarioIds?: string;\n includeTags?: string;\n skipScenarioIds?: string;\n reporter?: string;\n apiBaseUrl?: string;\n uiBaseUrl?: string;\n headless?: boolean;\n timeoutMs?: number;\n retries?: number;\n listSpecs?: boolean;\n printApiLogs?: boolean;\n runName?: string;\n}\n\n@SubCommand({\n name: 'run',\n description: 'Run testing scenarios from module metadata.',\n})\nexport class TestRunCommand extends CommandRunner {\n private readonly logger = new Logger(TestRunCommand.name);\n\n constructor(\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: TestRunCommandOptions): Promise<void> {\n try {\n const moduleName = options?.moduleName ?? options?.module ?? passedParam?.[0];\n if (!moduleName) {\n this.logger.error('Module name is required. Use --module or pass it as the first argument.');\n return;\n }\n\n const metadataPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n if (!metadataPath) {\n this.logger.error(`Unable to resolve metadata path for module: ${moduleName}`);\n return;\n }\n\n const metadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(metadataPath);\n if (!metadata?.testing) {\n this.logger.error(`No testing configuration found in metadata: ${metadataPath}`);\n return;\n }\n\n const listSpecs = options?.listSpecs ?? false;\n const specEntries = Array.isArray(metadata.testing?.specs)\n ? metadata.testing.specs\n : [];\n\n if (listSpecs) {\n const registry = new SpecRegistry();\n if (specEntries.length) {\n loadSpecRegistrations(specEntries, metadataPath, registry);\n }\n printSpecList(registry.list());\n return;\n }\n if (!metadata?.testing?.scenarios || !Array.isArray(metadata.testing.scenarios)) {\n this.logger.error(`No testing.scenarios found in metadata: ${metadataPath}`);\n return;\n }\n\n const scenarioIds = splitCsv(options?.scenarioIds);\n const includeTags = splitCsv(options?.includeTags);\n const skipScenarioIds = splitCsv(options?.skipScenarioIds);\n\n const reporterName = options?.reporter ?? 'console';\n if (reporterName !== 'console') {\n this.logger.error(`Unsupported reporter: ${reporterName}. Use \"console\".`);\n return;\n }\n\n const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;\n const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;\n const headless = options?.headless ?? true;\n const printApiLogs = options?.printApiLogs ?? false;\n\n const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;\n const runName = options?.runName ?? `run-${Date.now()}`;\n const reporter = webhookUrl\n ? new WebhookReporter(webhookUrl, runName)\n : new ConsoleReporter();\n\n try {\n await runFromMetadata({\n metadata: metadata as TestingMetadata,\n scenarioIds,\n includeTags,\n skipScenarioIds,\n reporter,\n api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,\n ui: { baseUrl: uiBaseUrl, headless },\n defaults: {\n timeoutMs: options?.timeoutMs,\n retries: options?.retries,\n },\n options: { printApiLogs },\n specs: specEntries.length\n ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)\n : undefined,\n });\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n } finally {\n if (reporter instanceof WebhookReporter) {\n await reporter.flush(Number(process.exitCode ?? 0));\n }\n }\n return;\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n return;\n }\n }\n\n @Option({\n flags: '-m, --module [module name]',\n description: 'Module name to load metadata from.',\n required: false,\n })\n parseModule(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to run.',\n required: false,\n })\n parseScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--include-tags [tags]',\n description: 'Comma-separated list of tags; scenario must include all.',\n required: false,\n })\n parseIncludeTags(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--skip-scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to skip.',\n required: false,\n })\n parseSkipScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--reporter [name]',\n description: 'Reporter name (currently only \"console\").',\n required: false,\n })\n parseReporter(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--list-specs [true|false]',\n description: 'List registered test specs and exit.',\n required: false,\n })\n parseListSpecs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--print-api-logs [true|false]',\n description: 'Print full API request/response logs for api.request steps.',\n required: false,\n })\n parsePrintApiLogs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--api-base-url [url]',\n description: 'API base URL (defaults to process.env.BASE_URL).',\n required: false,\n })\n parseApiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--ui-base-url [url]',\n description: 'UI base URL (defaults to process.env.FRONTEND_BASE_URL).',\n required: false,\n })\n parseUiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--headless [true|false]',\n description: 'Run UI browser in headless mode (default: true).',\n required: false,\n })\n parseHeadless(val: string): boolean {\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--timeout-ms [number]',\n description: 'Default scenario timeout in milliseconds.',\n required: false,\n })\n parseTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--retries [number]',\n description: 'Default scenario retries.',\n required: false,\n })\n parseRetries(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--run-name [name]',\n description: 'Logical name for this test run (used by webhook reporter).',\n required: false,\n })\n parseRunName(val: string): string {\n return val;\n }\n}\n\nfunction splitCsv(value?: string): string[] | undefined {\n if (!value) return undefined;\n const items = value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n return items.length ? items : undefined;\n}\n\nfunction resolveSpecPath(entry: string, metadataPath: string): string {\n if (path.isAbsolute(entry)) {\n return entry;\n }\n if (entry.startsWith('.')) {\n return path.resolve(path.dirname(metadataPath), entry);\n }\n return path.resolve(process.cwd(), entry);\n}\n\nfunction loadSpecRegistrations(entries: string[], metadataPath: string, registry: SpecRegistry): void {\n for (const entry of entries) {\n const resolved = resolveSpecPath(entry, metadataPath);\n let mod: any;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n mod = require(resolved);\n } catch (err: any) {\n const message = err?.message ?? String(err);\n throw new Error(\n `Failed to load test spec module \"${entry}\" resolved to \"${resolved}\": ${message}`,\n );\n }\n const register = mod?.registerTestSpecs ?? mod?.default ?? mod;\n if (typeof register !== 'function') {\n throw new Error(\n `Test spec module \"${entry}\" did not export a register function (expected \"registerTestSpecs\" or default export).`,\n );\n }\n register(registry);\n }\n}\nfunction printSpecList(specIds: string[]): void {\n if (!specIds.length) {\n console.log('No test specs registered.');\n return;\n }\n console.log('Registered test specs:');\n for (const id of specIds) {\n console.log(`- ${id}`);\n }\n}\n"]}
1
+ {"version":3,"file":"run-tests.command.js","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { SubCommand, CommandRunner, Option } from 'nest-commander';\nimport * as path from 'path';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ConsoleReporter } from 'src/testing/reporter/console-reporter';\nimport { ProgressReporter } from 'src/testing/reporter/progress-reporter';\nimport { WebhookReporter } from 'src/testing/reporter/webhook-reporter';\nimport { runFromMetadata } from 'src/testing/runner/run-from-metadata';\nimport type { TestingMetadata } from 'src/testing/contracts/testing-metadata.types';\nimport { SpecRegistry } from 'src/testing/core/spec-registry';\nimport { SettingService } from 'src/services/setting.service';\nimport type { SolidCoreSetting } from 'src/services/settings/default-settings-provider.service';\n\ninterface TestRunCommandOptions {\n module?: string;\n moduleName?: string;\n scenarioIds?: string;\n includeTags?: string;\n skipScenarioIds?: string;\n reporter?: string;\n apiBaseUrl?: string;\n uiBaseUrl?: string;\n headless?: boolean;\n uiTimeoutMs?: number;\n uiNavigationTimeoutMs?: number;\n timeoutMs?: number;\n retries?: number;\n listSpecs?: boolean;\n printApiLogs?: boolean;\n runName?: string;\n progress?: boolean;\n}\n\n@SubCommand({\n name: 'run',\n description: 'Run testing scenarios from module metadata.',\n})\nexport class TestRunCommand extends CommandRunner {\n private readonly logger = new Logger(TestRunCommand.name);\n\n constructor(\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n private readonly settingService: SettingService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: TestRunCommandOptions): Promise<void> {\n try {\n const moduleName = options?.moduleName ?? options?.module ?? passedParam?.[0];\n if (!moduleName) {\n this.logger.error('Module name is required. Use --module or pass it as the first argument.');\n return;\n }\n\n const metadataPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n if (!metadataPath) {\n this.logger.error(`Unable to resolve metadata path for module: ${moduleName}`);\n return;\n }\n\n const metadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(metadataPath);\n if (!metadata?.testing) {\n this.logger.error(`No testing configuration found in metadata: ${metadataPath}`);\n return;\n }\n\n const listSpecs = options?.listSpecs ?? false;\n const specEntries = Array.isArray(metadata.testing?.specs)\n ? metadata.testing.specs\n : [];\n\n if (listSpecs) {\n const registry = new SpecRegistry();\n if (specEntries.length) {\n loadSpecRegistrations(specEntries, metadataPath, registry);\n }\n printSpecList(registry.list());\n return;\n }\n if (!metadata?.testing?.scenarios || !Array.isArray(metadata.testing.scenarios)) {\n this.logger.error(`No testing.scenarios found in metadata: ${metadataPath}`);\n return;\n }\n\n const scenarioIds = splitCsv(options?.scenarioIds);\n const includeTags = splitCsv(options?.includeTags);\n const skipScenarioIds = splitCsv(options?.skipScenarioIds);\n\n const reporterName = options?.reporter ?? 'console';\n if (reporterName !== 'console') {\n this.logger.error(`Unsupported reporter: ${reporterName}. Use \"console\".`);\n return;\n }\n\n const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;\n const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;\n const headless = options?.headless ?? true;\n const uiTimeoutMs =\n options?.uiTimeoutMs\n ?? toPositiveNumber(process.env.UI_TIMEOUT_MS)\n ?? toPositiveNumber(this.settingService.getConfigValue<SolidCoreSetting>('uiTestDefaultTimeoutMs'));\n const uiNavigationTimeoutMs =\n options?.uiNavigationTimeoutMs\n ?? toPositiveNumber(process.env.UI_NAVIGATION_TIMEOUT_MS)\n ?? toPositiveNumber(this.settingService.getConfigValue<SolidCoreSetting>('uiTestNavigationTimeoutMs'));\n const printApiLogs = options?.printApiLogs ?? false;\n\n const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;\n const runName = options?.runName ?? `run-${Date.now()}`;\n const baseReporter = webhookUrl\n ? new WebhookReporter(webhookUrl, runName)\n : new ConsoleReporter();\n const reporter = options?.progress === false\n ? baseReporter\n : new ProgressReporter(baseReporter);\n\n try {\n await runFromMetadata({\n metadata: metadata as TestingMetadata,\n scenarioIds,\n includeTags,\n skipScenarioIds,\n reporter,\n api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,\n ui: {\n baseUrl: uiBaseUrl,\n headless,\n defaultTimeoutMs: uiTimeoutMs,\n navigationTimeoutMs: uiNavigationTimeoutMs,\n },\n defaults: {\n timeoutMs: options?.timeoutMs,\n retries: options?.retries,\n },\n options: { printApiLogs },\n specs: specEntries.length\n ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)\n : undefined,\n });\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n } finally {\n if (baseReporter instanceof WebhookReporter) {\n await baseReporter.flush(Number(process.exitCode ?? 0));\n }\n }\n return;\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n return;\n }\n }\n\n @Option({\n flags: '-m, --module [module name]',\n description: 'Module name to load metadata from.',\n required: false,\n })\n parseModule(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to run.',\n required: false,\n })\n parseScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--include-tags [tags]',\n description: 'Comma-separated list of tags; scenario must include all.',\n required: false,\n })\n parseIncludeTags(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--skip-scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to skip.',\n required: false,\n })\n parseSkipScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--reporter [name]',\n description: 'Reporter name (currently only \"console\").',\n required: false,\n })\n parseReporter(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--list-specs [true|false]',\n description: 'List registered test specs and exit.',\n required: false,\n })\n parseListSpecs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--print-api-logs [true|false]',\n description: 'Print full API request/response logs for api.request steps.',\n required: false,\n })\n parsePrintApiLogs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--api-base-url [url]',\n description: 'API base URL (defaults to process.env.BASE_URL).',\n required: false,\n })\n parseApiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--ui-base-url [url]',\n description: 'UI base URL (defaults to process.env.FRONTEND_BASE_URL).',\n required: false,\n })\n parseUiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--headless [true|false]',\n description: 'Run UI browser in headless mode (default: true).',\n required: false,\n })\n parseHeadless(val: string): boolean {\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--ui-timeout-ms [number]',\n description:\n 'Default timeout in ms for UI steps (waits, clicks, fills). Defaults to process.env.UI_TIMEOUT_MS, then the uiTestDefaultTimeoutMs setting, then 30000.',\n required: false,\n })\n parseUiTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--ui-navigation-timeout-ms [number]',\n description:\n 'Default timeout in ms for ui.goto navigation. Defaults to process.env.UI_NAVIGATION_TIMEOUT_MS, then the uiTestNavigationTimeoutMs setting, then --ui-timeout-ms.',\n required: false,\n })\n parseUiNavigationTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--timeout-ms [number]',\n description: 'Default scenario timeout in milliseconds.',\n required: false,\n })\n parseTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--retries [number]',\n description: 'Default scenario retries.',\n required: false,\n })\n parseRetries(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--run-name [name]',\n description: 'Logical name for this test run (used by webhook reporter).',\n required: false,\n })\n parseRunName(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--no-progress',\n description: 'Disable the interactive test progress footer.',\n required: false,\n })\n parseNoProgress(): boolean {\n return false;\n }\n}\n\nfunction splitCsv(value?: string): string[] | undefined {\n if (!value) return undefined;\n const items = value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n return items.length ? items : undefined;\n}\n\n// Accepts unknown because settings come back already parsed as numbers, while env\n// vars arrive as strings.\nfunction toPositiveNumber(value?: unknown): number | undefined {\n if (value === null || value === undefined || value === '') return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction resolveSpecPath(entry: string, metadataPath: string): string {\n if (path.isAbsolute(entry)) {\n return entry;\n }\n if (entry.startsWith('.')) {\n return path.resolve(path.dirname(metadataPath), entry);\n }\n return path.resolve(process.cwd(), entry);\n}\n\nfunction loadSpecRegistrations(entries: string[], metadataPath: string, registry: SpecRegistry): void {\n for (const entry of entries) {\n const resolved = resolveSpecPath(entry, metadataPath);\n let mod: any;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n mod = require(resolved);\n } catch (err: any) {\n const message = err?.message ?? String(err);\n throw new Error(\n `Failed to load test spec module \"${entry}\" resolved to \"${resolved}\": ${message}`,\n );\n }\n const register = mod?.registerTestSpecs ?? mod?.default ?? mod;\n if (typeof register !== 'function') {\n throw new Error(\n `Test spec module \"${entry}\" did not export a register function (expected \"registerTestSpecs\" or default export).`,\n );\n }\n register(registry);\n }\n}\nfunction printSpecList(specIds: string[]): void {\n if (!specIds.length) {\n console.log('No test specs registered.');\n return;\n }\n console.log('Registered test specs:');\n for (const id of specIds) {\n console.log(`- ${id}`);\n }\n}\n"]}
@@ -4,6 +4,7 @@ interface SeedCommandOptions {
4
4
  seeder?: string;
5
5
  modulesToSeed?: string;
6
6
  prune?: boolean;
7
+ skipHooks?: boolean;
7
8
  }
8
9
  export declare class SeedCommand extends CommandRunner {
9
10
  private readonly solidRegistry;
@@ -13,6 +14,7 @@ export declare class SeedCommand extends CommandRunner {
13
14
  parseModulesToSeed(val: string): string;
14
15
  parseString(val: string): string;
15
16
  parsePrune(): boolean;
17
+ parseSkipHooks(): boolean;
16
18
  }
17
19
  export {};
18
20
  //# sourceMappingURL=seed.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBACa,WAAY,SAAQ,aAAa;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE1B,aAAa,EAAE,aAAa;IAInD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C7E,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKvC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKhC,UAAU,IAAI,OAAO;CAGtB"}
1
+ {"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBACa,WAAY,SAAQ,aAAa;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE1B,aAAa,EAAE,aAAa;IAInD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD7E,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKvC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKhC,UAAU,IAAI,OAAO;IAKrB,cAAc,IAAI,OAAO;CAG1B"}
@@ -31,6 +31,7 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
31
31
  modulesToSeed,
32
32
  pruneMetadata: false,
33
33
  seedGlobalMetadata: true,
34
+ skipHooks: false,
34
35
  };
35
36
  this.logger.log(`Modules to seed: ${modulesToSeed.join(', ')}`);
36
37
  }
@@ -42,9 +43,20 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
42
43
  modulesToSeed: null,
43
44
  pruneMetadata: false,
44
45
  seedGlobalMetadata: true,
46
+ skipHooks: false,
45
47
  };
46
48
  parsedConf.pruneMetadata = true;
47
49
  }
50
+ if (options?.skipHooks) {
51
+ parsedConf = parsedConf ?? {
52
+ modulesToSeed: null,
53
+ pruneMetadata: false,
54
+ seedGlobalMetadata: true,
55
+ skipHooks: false,
56
+ };
57
+ parsedConf.skipHooks = true;
58
+ this.logger.log('Skipping pre-seed and post-seed hooks.');
59
+ }
48
60
  const seeder = this.solidRegistry
49
61
  .getSeeders()
50
62
  .filter((seeder) => seeder.name === options.seeder)
@@ -66,6 +78,9 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
66
78
  parsePrune() {
67
79
  return true;
68
80
  }
81
+ parseSkipHooks() {
82
+ return true;
83
+ }
69
84
  };
70
85
  exports.SeedCommand = SeedCommand;
71
86
  __decorate([
@@ -86,6 +101,12 @@ __decorate([
86
101
  __metadata("design:paramtypes", []),
87
102
  __metadata("design:returntype", Boolean)
88
103
  ], SeedCommand.prototype, "parsePrune", null);
104
+ __decorate([
105
+ (0, nest_commander_1.Option)({ flags: '--skip-hooks', description: 'Skip emitting pre-seed and post-seed lifecycle hooks/events.' }),
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", []),
108
+ __metadata("design:returntype", Boolean)
109
+ ], SeedCommand.prototype, "parseSkipHooks", null);
89
110
  exports.SeedCommand = SeedCommand = SeedCommand_1 = __decorate([
90
111
  (0, nest_commander_1.Command)({ name: 'seed', description: 'Install seed data for a given module' }),
91
112
  __metadata("design:paramtypes", [solid_registry_1.SolidRegistry])
@@ -1 +1 @@
1
- {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ModuleMetadataSeederOptions } from 'src/interfaces';\n\ninterface SeedCommandOptions {\n seeder?: string;\n modulesToSeed?: string;\n prune?: boolean;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n let parsedConf: ModuleMetadataSeederOptions | null = null;\n if (options?.modulesToSeed) {\n const modulesToSeed = options.modulesToSeed\n .split(',')\n .map((m) => m.trim())\n .filter(Boolean);\n parsedConf = {\n modulesToSeed,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n };\n this.logger.log(`Modules to seed: ${modulesToSeed.join(', ')}`);\n } else {\n this.logger.log('No --modules-to-seed flag provided. Running with default seeder behavior.');\n }\n\n if (options?.prune) {\n parsedConf = parsedConf ?? {\n modulesToSeed: null,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n };\n parsedConf.pruneMetadata = true;\n }\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder: ${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n /**\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n @Option({ flags: '-m, --modules-to-seed [module names]', description: 'Comma-separated list of module names to seed.', required: false })\n parseModulesToSeed(val: string): string {\n return val;\n }\n\n @Option({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' })\n parseString(val: string): string {\n return val;\n }\n\n @Option({ flags: '--prune', description: 'Prune metadata not present in JSON.' })\n parsePrune(): boolean {\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ModuleMetadataSeederOptions } from 'src/interfaces';\n\ninterface SeedCommandOptions {\n seeder?: string;\n modulesToSeed?: string;\n prune?: boolean;\n skipHooks?: boolean;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n let parsedConf: ModuleMetadataSeederOptions | null = null;\n if (options?.modulesToSeed) {\n const modulesToSeed = options.modulesToSeed\n .split(',')\n .map((m) => m.trim())\n .filter(Boolean);\n parsedConf = {\n modulesToSeed,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n skipHooks: false,\n };\n this.logger.log(`Modules to seed: ${modulesToSeed.join(', ')}`);\n } else {\n this.logger.log('No --modules-to-seed flag provided. Running with default seeder behavior.');\n }\n\n if (options?.prune) {\n parsedConf = parsedConf ?? {\n modulesToSeed: null,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n skipHooks: false,\n };\n parsedConf.pruneMetadata = true;\n }\n\n if (options?.skipHooks) {\n parsedConf = parsedConf ?? {\n modulesToSeed: null,\n pruneMetadata: false,\n seedGlobalMetadata: true,\n skipHooks: false,\n };\n parsedConf.skipHooks = true;\n this.logger.log('Skipping pre-seed and post-seed hooks.');\n }\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder: ${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n /**\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n @Option({ flags: '-m, --modules-to-seed [module names]', description: 'Comma-separated list of module names to seed.', required: false })\n parseModulesToSeed(val: string): string {\n return val;\n }\n\n @Option({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' })\n parseString(val: string): string {\n return val;\n }\n\n @Option({ flags: '--prune', description: 'Prune metadata not present in JSON.' })\n parsePrune(): boolean {\n return true;\n }\n\n @Option({ flags: '--skip-hooks', description: 'Skip emitting pre-seed and post-seed lifecycle hooks/events.' })\n parseSkipHooks(): boolean {\n return true;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.options.d.ts","sourceRoot":"","sources":["../../src/config/cache.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAKhE,eAAO,MAAM,mBAAmB,EAAE,uBAmBjC,CAAC"}
1
+ {"version":3,"file":"cache.options.d.ts","sourceRoot":"","sources":["../../src/config/cache.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAahE,eAAO,MAAM,mBAAmB,EAAE,uBAmBjC,CAAC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CacheManagerOptions = void 0;
4
4
  const config_1 = require("@nestjs/config");
5
- const cache_manager_redis_store_1 = require("cache-manager-redis-store");
5
+ const cache_manager_redis_yet_1 = require("cache-manager-redis-yet");
6
6
  const environment_helper_1 = require("../helpers/environment.helper");
7
7
  exports.CacheManagerOptions = {
8
8
  isGlobal: true,
@@ -21,7 +21,7 @@ exports.CacheManagerOptions = {
21
21
  inject: [config_1.ConfigService],
22
22
  };
23
23
  async function createRedisStore(configService) {
24
- return await (0, cache_manager_redis_store_1.redisStore)({
24
+ return await (0, cache_manager_redis_yet_1.redisStore)({
25
25
  socket: {
26
26
  host: configService.get('REDIS_HOST'),
27
27
  port: parseInt(configService.get('REDIS_PORT')),
@@ -1 +1 @@
1
- {"version":3,"file":"cache.options.js","sourceRoot":"","sources":["../../src/config/cache.options.ts"],"names":[],"mappings":";;;AACA,2CAA6D;AAC7D,yEAAuD;AACvD,sEAAmE;AAEtD,QAAA,mBAAmB,GAA4B;IACxD,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,CAAC,qBAAY,CAAC;IACvB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE;QAG/C,IAAI,CAAC,IAAA,sCAAiB,EAAC,aAAa,CAAC,EAAE,CAAC;YACpC,OAAO;gBACH,GAAG,EAAE,CAAC;aACT,CAAA;QACL,CAAC;QAGD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACpD,OAAO;YACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;SACrB,CAAC;IACN,CAAC;IACD,MAAM,EAAE,CAAC,sBAAa,CAAC;CAC1B,CAAC;AAEF,KAAK,UAAU,gBAAgB,CAAC,aAA4D;IACxF,OAAO,MAAM,IAAA,sCAAU,EAAC;QACpB,MAAM,EAAE;YACJ,IAAI,EAAE,aAAa,CAAC,GAAG,CAAS,YAAY,CAAC;YAC7C,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAS,YAAY,CAAE,CAAC;SAC3D;KACJ,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { CacheModuleAsyncOptions } from '@nestjs/cache-manager';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\nimport { redisStore } from 'cache-manager-redis-store';\nimport { isRedisConfigured } from 'src/helpers/environment.helper';\n\nexport const CacheManagerOptions: CacheModuleAsyncOptions = {\n isGlobal: true,\n imports: [ConfigModule],\n useFactory: async (configService: ConfigService) => {\n\n // This defaults to in-memory cache\n if (!isRedisConfigured(configService)) {\n return {\n ttl: 0\n }\n }\n\n // If redis is configured we use that...\n const store = await createRedisStore(configService);\n return {\n store: () => store,\n };\n },\n inject: [ConfigService],\n};\n\nasync function createRedisStore(configService: ConfigService<Record<string, unknown>, false>) {\n return await redisStore({\n socket: {\n host: configService.get<string>('REDIS_HOST'),\n port: parseInt(configService.get<string>('REDIS_PORT')!),\n },\n });\n}\n"]}
1
+ {"version":3,"file":"cache.options.js","sourceRoot":"","sources":["../../src/config/cache.options.ts"],"names":[],"mappings":";;;AACA,2CAA6D;AAS7D,qEAAqD;AACrD,sEAAmE;AAEtD,QAAA,mBAAmB,GAA4B;IACxD,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,CAAC,qBAAY,CAAC;IACvB,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,EAAE;QAG/C,IAAI,CAAC,IAAA,sCAAiB,EAAC,aAAa,CAAC,EAAE,CAAC;YACpC,OAAO;gBACH,GAAG,EAAE,CAAC;aACT,CAAA;QACL,CAAC;QAGD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACpD,OAAO;YACH,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK;SACrB,CAAC;IACN,CAAC;IACD,MAAM,EAAE,CAAC,sBAAa,CAAC;CAC1B,CAAC;AAEF,KAAK,UAAU,gBAAgB,CAAC,aAA4D;IACxF,OAAO,MAAM,IAAA,oCAAU,EAAC;QACpB,MAAM,EAAE;YACJ,IAAI,EAAE,aAAa,CAAC,GAAG,CAAS,YAAY,CAAC;YAC7C,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAS,YAAY,CAAE,CAAC;SAC3D;KACJ,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { CacheModuleAsyncOptions } from '@nestjs/cache-manager';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\n// cache-manager-redis-yet, not cache-manager-redis-store. The latter stops at\n// 3.0.1 and implements the cache-manager v4 store contract: it expects an\n// options object and reads `options.ttl` in seconds. cache-manager v5 calls\n// `store.set(key, value, ttl)` with a bare number of milliseconds, so that\n// store found no `.ttl`, fell back to an unset default, and issued a plain\n// `SET` - silently discarding every TTL passed anywhere in the app and leaving\n// Redis keys that never expire. redis-yet implements the v5 contract and\n// writes with `PX`, so millisecond TTLs land correctly.\nimport { redisStore } from 'cache-manager-redis-yet';\nimport { isRedisConfigured } from 'src/helpers/environment.helper';\n\nexport const CacheManagerOptions: CacheModuleAsyncOptions = {\n isGlobal: true,\n imports: [ConfigModule],\n useFactory: async (configService: ConfigService) => {\n\n // This defaults to in-memory cache\n if (!isRedisConfigured(configService)) {\n return {\n ttl: 0\n }\n }\n\n // If redis is configured we use that...\n const store = await createRedisStore(configService);\n return {\n store: () => store,\n };\n },\n inject: [ConfigService],\n};\n\nasync function createRedisStore(configService: ConfigService<Record<string, unknown>, false>) {\n return await redisStore({\n socket: {\n host: configService.get<string>('REDIS_HOST'),\n port: parseInt(configService.get<string>('REDIS_PORT')!),\n },\n });\n}\n"]}
@@ -14,4 +14,5 @@ export declare const CHATTER_MESSAGE_STATUS: {
14
14
  readonly PENDING: "pending";
15
15
  readonly COMPLETED: "completed";
16
16
  };
17
+ export declare const CHATTER_MESSAGE_USER_FIELDS: readonly ["id", "fullName"];
17
18
  //# sourceMappingURL=chatter-message.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.constants.d.ts","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC"}
1
+ {"version":3,"file":"chatter-message.constants.d.ts","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAUX,eAAO,MAAM,2BAA2B,6BAAsB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CHATTER_MESSAGE_STATUS = exports.CHATTER_MESSAGE_SUBTYPE = exports.CHATTER_MESSAGE_TYPE = void 0;
3
+ exports.CHATTER_MESSAGE_USER_FIELDS = exports.CHATTER_MESSAGE_STATUS = exports.CHATTER_MESSAGE_SUBTYPE = exports.CHATTER_MESSAGE_TYPE = void 0;
4
+ const user_constants_1 = require("./user.constants");
4
5
  exports.CHATTER_MESSAGE_TYPE = {
5
6
  AUDIT: 'audit',
6
7
  CUSTOM: 'custom',
@@ -17,4 +18,5 @@ exports.CHATTER_MESSAGE_STATUS = {
17
18
  PENDING: 'pending',
18
19
  COMPLETED: 'completed',
19
20
  };
21
+ exports.CHATTER_MESSAGE_USER_FIELDS = user_constants_1.USER_SUMMARY_FIELDS;
20
22
  //# sourceMappingURL=chatter-message.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.constants.js","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IAChC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,uBAAuB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACN,CAAC;AAEE,QAAA,sBAAsB,GAAG;IAClC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CAChB,CAAC","sourcesContent":["export const CHATTER_MESSAGE_TYPE = {\n AUDIT: 'audit',\n CUSTOM: 'custom',\n} as const;\n\nexport const CHATTER_MESSAGE_SUBTYPE = {\n AUDIT_INSERT: 'audit_insert',\n AUDIT_UPDATE: 'audit_update',\n AUDIT_DELETE: 'audit_delete',\n CUSTOM: 'custom',\n NOTE: 'note',\n TASK: 'task',\n} as const;\n\nexport const CHATTER_MESSAGE_STATUS = {\n PENDING: 'pending',\n COMPLETED: 'completed',\n} as const;\n"]}
1
+ {"version":3,"file":"chatter-message.constants.js","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":";;;AAAA,qDAAmE;AAEtD,QAAA,oBAAoB,GAAG;IAChC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,uBAAuB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACN,CAAC;AAEE,QAAA,sBAAsB,GAAG;IAClC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CAChB,CAAC;AAUE,QAAA,2BAA2B,GAAG,oCAAmB,CAAC","sourcesContent":["import { USER_SUMMARY_FIELDS } from 'src/constants/user.constants';\n\nexport const CHATTER_MESSAGE_TYPE = {\n AUDIT: 'audit',\n CUSTOM: 'custom',\n} as const;\n\nexport const CHATTER_MESSAGE_SUBTYPE = {\n AUDIT_INSERT: 'audit_insert',\n AUDIT_UPDATE: 'audit_update',\n AUDIT_DELETE: 'audit_delete',\n CUSTOM: 'custom',\n NOTE: 'note',\n TASK: 'task',\n} as const;\n\nexport const CHATTER_MESSAGE_STATUS = {\n PENDING: 'pending',\n COMPLETED: 'completed',\n} as const;\n\n/**\n * Columns of the message author exposed by the chatter APIs.\n *\n * The chatter panel renders `fullName` (name label + initials avatar) and uses `id`\n * for the own-note edit check; the admin list/form/tree views display `fullName` via\n * each view's `coModelFieldToDisplay`. That is exactly the platform-wide summary\n * shape, so this is an alias rather than a second list to keep in step.\n */\nexport const CHATTER_MESSAGE_USER_FIELDS = USER_SUMMARY_FIELDS;\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const DRAFT_PUBLISH_VERSIONING_FIELD_NAMES: readonly ["isPublished", "isLatest", "initialEntityVersionId", "publishedTracker"];
2
+ //# sourceMappingURL=draft-publish-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-publish-fields.d.ts","sourceRoot":"","sources":["../../src/constants/draft-publish-fields.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oCAAoC,oFAAqF,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DRAFT_PUBLISH_VERSIONING_FIELD_NAMES = void 0;
4
+ exports.DRAFT_PUBLISH_VERSIONING_FIELD_NAMES = ['isPublished', 'isLatest', 'initialEntityVersionId', 'publishedTracker'];
5
+ //# sourceMappingURL=draft-publish-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-publish-fields.js","sourceRoot":"","sources":["../../src/constants/draft-publish-fields.ts"],"names":[],"mappings":";;;AAIa,QAAA,oCAAoC,GAAG,CAAC,aAAa,EAAE,UAAU,EAAE,wBAAwB,EAAE,kBAAkB,CAAU,CAAC","sourcesContent":["// The versioning columns CommonEntity adds for draft/publish support. These don't exist on\n// legacy tables (see LegacyCommonEntityWithExistingId) and don't carry over when a new draft\n// version is copied from its source entity, so both of those call sites share this list rather\n// than each hand-enumerating the same four names.\nexport const DRAFT_PUBLISH_VERSIONING_FIELD_NAMES = ['isPublished', 'isLatest', 'initialEntityVersionId', 'publishedTracker'] as const;\n"]}
@@ -85,6 +85,13 @@ export declare const ERROR_MESSAGES: {
85
85
  UNABLE_TO_RESOLVE_SOLID_COMMAND: string;
86
86
  UNABLE_TO_RESOLVE_MCP_HANDLER: string;
87
87
  DEFAULT_REGEX_PATTERN_NOT_MATCHING_ERROR_MSG: string;
88
+ MPIN_INVALID: string;
89
+ MPIN_LOCKED: string;
90
+ MPIN_REVOKED: string;
91
+ MPIN_NOT_ENABLED: string;
92
+ MPIN_FORMAT_INVALID: string;
93
+ MPIN_TOO_PREDICTABLE: string;
94
+ MPIN_CREDENTIAL_NOT_FOUND: string;
88
95
  PERMISSION_MESSAGES: Record<string, (model?: string) => string>;
89
96
  };
90
97
  //# sourceMappingURL=error-messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-messages.d.ts","sourceRoot":"","sources":["../../src/constants/error-messages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAyCE,MAAM,EAAE;2CACM,MAAM;+BAClB,MAAM;uCACE,MAAM;;;;;;;;;;;;;;;;;6BAiChB,MAAM;;;;0BAOT,MAAM,GAAG,MAAM;mCACN,MAAM;;;;;;mCASN,MAAM,GAAG,MAAM;qCACb,MAAM;yDACc,MAAM;qCAC1B,MAAM;;mCAIR,MAAM;8BACX,MAAM,GAAG,MAAM;gCAGb,MAAM,GAAG,MAAM;;;kCAKb,MAAM,GAAG,MAAM;qCACZ,MAAM;8CAGG,MAAM,GAAG,MAAM;;yCAIpB,MAAM;;;;;yBAYtC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAElD,CAAC"}
1
+ {"version":3,"file":"error-messages.d.ts","sourceRoot":"","sources":["../../src/constants/error-messages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAyCE,MAAM,EAAE;2CACM,MAAM;+BAClB,MAAM;uCACE,MAAM;;;;;;;;;;;;;;;;;6BAiChB,MAAM;;;;0BAOT,MAAM,GAAG,MAAM;mCACN,MAAM;;;;;;mCASN,MAAM,GAAG,MAAM;qCACb,MAAM;yDACc,MAAM;qCAC1B,MAAM;;mCAIR,MAAM;8BACX,MAAM,GAAG,MAAM;gCAGb,MAAM,GAAG,MAAM;;;kCAKb,MAAM,GAAG,MAAM;qCACZ,MAAM;8CAGG,MAAM,GAAG,MAAM;;yCAIpB,MAAM;;;;;;;;;;;;yBA0BtC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAElD,CAAC"}
@@ -88,6 +88,13 @@ exports.ERROR_MESSAGES = {
88
88
  UNABLE_TO_RESOLVE_SOLID_COMMAND: 'Unable to resolve a solid_ command that was used to come up with this response.',
89
89
  UNABLE_TO_RESOLVE_MCP_HANDLER: 'Unable to resolve a mcp tool handler.',
90
90
  DEFAULT_REGEX_PATTERN_NOT_MATCHING_ERROR_MSG: 'Invalid regex pattern.',
91
+ MPIN_INVALID: 'Invalid MPIN.',
92
+ MPIN_LOCKED: 'MPIN sign-in is temporarily locked due to repeated failed attempts.',
93
+ MPIN_REVOKED: 'MPIN sign-in has been disabled for this device. Please sign in normally.',
94
+ MPIN_NOT_ENABLED: 'MPIN sign-in is not enabled.',
95
+ MPIN_FORMAT_INVALID: 'MPIN does not meet the required format.',
96
+ MPIN_TOO_PREDICTABLE: 'MPIN is too easy to guess. Avoid repeated or sequential digits.',
97
+ MPIN_CREDENTIAL_NOT_FOUND: 'MPIN device credential not found.',
91
98
  PERMISSION_MESSAGES: {
92
99
  insertMany: (model) => `You do not have permission to import ${model ?? 'these'} records.`,
93
100
  },