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

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 (517) hide show
  1. package/CHANGELOG.md +10107 -0
  2. package/CLAUDE.md +5 -6
  3. package/README.md +19 -0
  4. package/dist/commands/run-tests.command.d.ts +9 -1
  5. package/dist/commands/run-tests.command.d.ts.map +1 -1
  6. package/dist/commands/run-tests.command.js +69 -6
  7. package/dist/commands/run-tests.command.js.map +1 -1
  8. package/dist/commands/seed.command.d.ts +2 -0
  9. package/dist/commands/seed.command.d.ts.map +1 -1
  10. package/dist/commands/seed.command.js +21 -0
  11. package/dist/commands/seed.command.js.map +1 -1
  12. package/dist/config/cache.options.d.ts.map +1 -1
  13. package/dist/config/cache.options.js +2 -2
  14. package/dist/config/cache.options.js.map +1 -1
  15. package/dist/constants/chatter-message.constants.d.ts +1 -0
  16. package/dist/constants/chatter-message.constants.d.ts.map +1 -1
  17. package/dist/constants/chatter-message.constants.js +3 -1
  18. package/dist/constants/chatter-message.constants.js.map +1 -1
  19. package/dist/constants/draft-publish-fields.d.ts +2 -0
  20. package/dist/constants/draft-publish-fields.d.ts.map +1 -0
  21. package/dist/constants/draft-publish-fields.js +5 -0
  22. package/dist/constants/draft-publish-fields.js.map +1 -0
  23. package/dist/constants/error-messages.d.ts +7 -0
  24. package/dist/constants/error-messages.d.ts.map +1 -1
  25. package/dist/constants/error-messages.js +7 -0
  26. package/dist/constants/error-messages.js.map +1 -1
  27. package/dist/constants/media-file-types.d.ts +12 -0
  28. package/dist/constants/media-file-types.d.ts.map +1 -1
  29. package/dist/constants/media-file-types.js +66 -1
  30. package/dist/constants/media-file-types.js.map +1 -1
  31. package/dist/constants/success-messages.d.ts +3 -0
  32. package/dist/constants/success-messages.d.ts.map +1 -1
  33. package/dist/constants/success-messages.js +3 -0
  34. package/dist/constants/success-messages.js.map +1 -1
  35. package/dist/constants/user.constants.d.ts +2 -0
  36. package/dist/constants/user.constants.d.ts.map +1 -0
  37. package/dist/constants/user.constants.js +5 -0
  38. package/dist/constants/user.constants.js.map +1 -0
  39. package/dist/controllers/action-metadata.controller.d.ts +1 -1
  40. package/dist/controllers/action-metadata.controller.js +1 -1
  41. package/dist/controllers/agent-event.controller.d.ts +1 -1
  42. package/dist/controllers/agent-event.controller.js +1 -1
  43. package/dist/controllers/agent-session.controller.d.ts +1 -1
  44. package/dist/controllers/agent-session.controller.js +1 -1
  45. package/dist/controllers/authentication.controller.d.ts +1 -1
  46. package/dist/controllers/authentication.controller.d.ts.map +1 -1
  47. package/dist/controllers/authentication.controller.js +4 -3
  48. package/dist/controllers/authentication.controller.js.map +1 -1
  49. package/dist/controllers/chatter-message.controller.d.ts +5 -0
  50. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  51. package/dist/controllers/chatter-message.controller.js +14 -0
  52. package/dist/controllers/chatter-message.controller.js.map +1 -1
  53. package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -1
  54. package/dist/controllers/dashboard-user-layout.controller.js +1 -1
  55. package/dist/controllers/email-template.controller.d.ts +1 -1
  56. package/dist/controllers/email-template.controller.js +1 -1
  57. package/dist/controllers/export-template.controller.d.ts +1 -1
  58. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  59. package/dist/controllers/export-template.controller.js +6 -4
  60. package/dist/controllers/export-template.controller.js.map +1 -1
  61. package/dist/controllers/export-transaction.controller.d.ts +1 -1
  62. package/dist/controllers/export-transaction.controller.js +1 -1
  63. package/dist/controllers/field-metadata.controller.d.ts +2 -2
  64. package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -1
  65. package/dist/controllers/import-transaction-error-log.controller.js +1 -1
  66. package/dist/controllers/import-transaction.controller.d.ts +1 -1
  67. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  68. package/dist/controllers/import-transaction.controller.js +7 -7
  69. package/dist/controllers/import-transaction.controller.js.map +1 -1
  70. package/dist/controllers/list-of-values.controller.d.ts +1 -1
  71. package/dist/controllers/list-of-values.controller.js +1 -1
  72. package/dist/controllers/locale.controller.d.ts +1 -1
  73. package/dist/controllers/locale.controller.js +1 -1
  74. package/dist/controllers/mcp-audit-log.controller.d.ts +1 -1
  75. package/dist/controllers/mcp-audit-log.controller.js +1 -1
  76. package/dist/controllers/media.controller.d.ts +2 -2
  77. package/dist/controllers/media.controller.d.ts.map +1 -1
  78. package/dist/controllers/media.controller.js +13 -8
  79. package/dist/controllers/media.controller.js.map +1 -1
  80. package/dist/controllers/menu-item-metadata.controller.d.ts +1 -1
  81. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  82. package/dist/controllers/model-sequence.controller.d.ts +1 -1
  83. package/dist/controllers/model-sequence.controller.js +1 -1
  84. package/dist/controllers/module-package.controller.d.ts.map +1 -1
  85. package/dist/controllers/module-package.controller.js +2 -3
  86. package/dist/controllers/module-package.controller.js.map +1 -1
  87. package/dist/controllers/mpin-authentication.controller.d.ts +44 -0
  88. package/dist/controllers/mpin-authentication.controller.d.ts.map +1 -0
  89. package/dist/controllers/mpin-authentication.controller.js +102 -0
  90. package/dist/controllers/mpin-authentication.controller.js.map +1 -0
  91. package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
  92. package/dist/controllers/mq-message-queue.controller.js +1 -1
  93. package/dist/controllers/mq-message.controller.d.ts +1 -1
  94. package/dist/controllers/mq-message.controller.js +1 -1
  95. package/dist/controllers/permission-metadata.controller.d.ts +1 -1
  96. package/dist/controllers/permission-metadata.controller.js +1 -1
  97. package/dist/controllers/role-metadata.controller.d.ts +1 -1
  98. package/dist/controllers/role-metadata.controller.js +1 -1
  99. package/dist/controllers/saved-filters.controller.d.ts +1 -1
  100. package/dist/controllers/saved-filters.controller.js +1 -1
  101. package/dist/controllers/scheduled-job.controller.d.ts +1 -1
  102. package/dist/controllers/scheduled-job.controller.js +1 -1
  103. package/dist/controllers/security-rule.controller.d.ts +1 -1
  104. package/dist/controllers/security-rule.controller.js +1 -1
  105. package/dist/controllers/sms-template.controller.d.ts +1 -1
  106. package/dist/controllers/sms-template.controller.js +1 -1
  107. package/dist/controllers/user-activity-history.controller.d.ts +1 -1
  108. package/dist/controllers/user-activity-history.controller.js +1 -1
  109. package/dist/controllers/user-view-metadata.controller.d.ts +1 -1
  110. package/dist/controllers/user-view-metadata.controller.js +1 -1
  111. package/dist/controllers/user.controller.d.ts +2 -2
  112. package/dist/controllers/user.controller.js +2 -2
  113. package/dist/controllers/view-metadata.controller.d.ts +2 -2
  114. package/dist/controllers/view-metadata.controller.js +1 -1
  115. package/dist/controllers/workflow-definition.controller.d.ts +1 -1
  116. package/dist/controllers/workflow-definition.controller.js +1 -1
  117. package/dist/controllers/workflow-execution-artifact.controller.d.ts +1 -1
  118. package/dist/controllers/workflow-execution-artifact.controller.js +1 -1
  119. package/dist/controllers/workflow-execution-log.controller.d.ts +1 -1
  120. package/dist/controllers/workflow-execution-log.controller.js +1 -1
  121. package/dist/controllers/workflow-execution.controller.d.ts +1 -1
  122. package/dist/controllers/workflow-execution.controller.js +1 -1
  123. package/dist/controllers/workflow-secret.controller.d.ts +1 -1
  124. package/dist/controllers/workflow-secret.controller.js +1 -1
  125. package/dist/controllers/workflow-step-execution.controller.d.ts +1 -1
  126. package/dist/controllers/workflow-step-execution.controller.js +1 -1
  127. package/dist/controllers/workflow-trigger-execution.controller.d.ts +1 -1
  128. package/dist/controllers/workflow-trigger-execution.controller.js +1 -1
  129. package/dist/dtos/basic-filters.dto.d.ts +0 -1
  130. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  131. package/dist/dtos/basic-filters.dto.js +1 -6
  132. package/dist/dtos/basic-filters.dto.js.map +1 -1
  133. package/dist/dtos/change-mpin.dto.d.ts +6 -0
  134. package/dist/dtos/change-mpin.dto.d.ts.map +1 -0
  135. package/dist/dtos/change-mpin.dto.js +39 -0
  136. package/dist/dtos/change-mpin.dto.js.map +1 -0
  137. package/dist/dtos/create-field-metadata.dto.d.ts +3 -6
  138. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  139. package/dist/dtos/create-field-metadata.dto.js +15 -10
  140. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  141. package/dist/dtos/create-model-sequence.dto.d.ts +1 -1
  142. package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -1
  143. package/dist/dtos/create-model-sequence.dto.js +1 -1
  144. package/dist/dtos/create-model-sequence.dto.js.map +1 -1
  145. package/dist/dtos/mpin-login.dto.d.ts +5 -0
  146. package/dist/dtos/mpin-login.dto.d.ts.map +1 -0
  147. package/dist/dtos/mpin-login.dto.js +33 -0
  148. package/dist/dtos/mpin-login.dto.js.map +1 -0
  149. package/dist/dtos/setup-mpin.dto.d.ts +7 -0
  150. package/dist/dtos/setup-mpin.dto.d.ts.map +1 -0
  151. package/dist/dtos/setup-mpin.dto.js +47 -0
  152. package/dist/dtos/setup-mpin.dto.js.map +1 -0
  153. package/dist/entities/common.entity.d.ts +4 -0
  154. package/dist/entities/common.entity.d.ts.map +1 -1
  155. package/dist/entities/common.entity.js +25 -1
  156. package/dist/entities/common.entity.js.map +1 -1
  157. package/dist/entities/dashboard-user-layout.entity.js +2 -2
  158. package/dist/entities/dashboard-user-layout.entity.js.map +1 -1
  159. package/dist/entities/field-metadata.entity.d.ts +1 -0
  160. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  161. package/dist/entities/field-metadata.entity.js +5 -1
  162. package/dist/entities/field-metadata.entity.js.map +1 -1
  163. package/dist/entities/saved-filters.entity.js +3 -3
  164. package/dist/entities/saved-filters.entity.js.map +1 -1
  165. package/dist/entities/user-device-credential.entity.d.ts +18 -0
  166. package/dist/entities/user-device-credential.entity.d.ts.map +1 -0
  167. package/dist/entities/user-device-credential.entity.js +91 -0
  168. package/dist/entities/user-device-credential.entity.js.map +1 -0
  169. package/dist/entities/user.entity.d.ts.map +1 -1
  170. package/dist/entities/user.entity.js +36 -0
  171. package/dist/entities/user.entity.js.map +1 -1
  172. package/dist/entities/view-metadata.entity.js.map +1 -1
  173. package/dist/entities/workflow-execution-artifact.entity.d.ts.map +1 -1
  174. package/dist/entities/workflow-execution-artifact.entity.js +4 -3
  175. package/dist/entities/workflow-execution-artifact.entity.js.map +1 -1
  176. package/dist/entities/workflow-execution-log.entity.d.ts.map +1 -1
  177. package/dist/entities/workflow-execution-log.entity.js +4 -3
  178. package/dist/entities/workflow-execution-log.entity.js.map +1 -1
  179. package/dist/entities/workflow-execution.entity.d.ts.map +1 -1
  180. package/dist/entities/workflow-execution.entity.js +3 -2
  181. package/dist/entities/workflow-execution.entity.js.map +1 -1
  182. package/dist/entities/workflow-secret.entity.d.ts.map +1 -1
  183. package/dist/entities/workflow-secret.entity.js +3 -2
  184. package/dist/entities/workflow-secret.entity.js.map +1 -1
  185. package/dist/entities/workflow-step-execution.entity.d.ts.map +1 -1
  186. package/dist/entities/workflow-step-execution.entity.js +3 -2
  187. package/dist/entities/workflow-step-execution.entity.js.map +1 -1
  188. package/dist/entities/workflow-trigger-execution.entity.d.ts.map +1 -1
  189. package/dist/entities/workflow-trigger-execution.entity.js +7 -6
  190. package/dist/entities/workflow-trigger-execution.entity.js.map +1 -1
  191. package/dist/factories/mail.factory.d.ts.map +1 -1
  192. package/dist/factories/mail.factory.js +4 -0
  193. package/dist/factories/mail.factory.js.map +1 -1
  194. package/dist/filters/http-exception.filter.d.ts.map +1 -1
  195. package/dist/filters/http-exception.filter.js +5 -1
  196. package/dist/filters/http-exception.filter.js.map +1 -1
  197. package/dist/helpers/bootstrap.helper.d.ts +5 -2
  198. package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
  199. package/dist/helpers/bootstrap.helper.js +7 -3
  200. package/dist/helpers/bootstrap.helper.js.map +1 -1
  201. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +7 -0
  202. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  203. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +66 -32
  204. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  205. package/dist/helpers/file-download.helper.d.ts +9 -0
  206. package/dist/helpers/file-download.helper.d.ts.map +1 -0
  207. package/dist/helpers/file-download.helper.js +19 -0
  208. package/dist/helpers/file-download.helper.js.map +1 -0
  209. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  210. package/dist/helpers/model-metadata-helper.service.js +30 -1
  211. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  212. package/dist/helpers/security.helper.d.ts +5 -1
  213. package/dist/helpers/security.helper.d.ts.map +1 -1
  214. package/dist/helpers/security.helper.js +15 -4
  215. package/dist/helpers/security.helper.js.map +1 -1
  216. package/dist/helpers/solid-core-error-codes-provider.service.d.ts.map +1 -1
  217. package/dist/helpers/solid-core-error-codes-provider.service.js +45 -0
  218. package/dist/helpers/solid-core-error-codes-provider.service.js.map +1 -1
  219. package/dist/helpers/solid-microservice-adapter.service.d.ts.map +1 -1
  220. package/dist/helpers/solid-microservice-adapter.service.js +1 -1
  221. package/dist/helpers/solid-microservice-adapter.service.js.map +1 -1
  222. package/dist/helpers/solid-registry.js +1 -1
  223. package/dist/helpers/solid-registry.js.map +1 -1
  224. package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
  225. package/dist/helpers/typeorm-db-helper.js +9 -0
  226. package/dist/helpers/typeorm-db-helper.js.map +1 -1
  227. package/dist/index.d.ts +10 -0
  228. package/dist/index.d.ts.map +1 -1
  229. package/dist/index.js +10 -0
  230. package/dist/index.js.map +1 -1
  231. package/dist/interfaces/active-user-data.interface.d.ts +1 -0
  232. package/dist/interfaces/active-user-data.interface.d.ts.map +1 -1
  233. package/dist/interfaces/active-user-data.interface.js.map +1 -1
  234. package/dist/interfaces.d.ts +1 -0
  235. package/dist/interfaces.d.ts.map +1 -1
  236. package/dist/interfaces.js.map +1 -1
  237. package/dist/repository/user-device-credential.repository.d.ts +12 -0
  238. package/dist/repository/user-device-credential.repository.d.ts.map +1 -0
  239. package/dist/repository/user-device-credential.repository.js +34 -0
  240. package/dist/repository/user-device-credential.repository.js.map +1 -0
  241. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  242. package/dist/seeders/module-metadata-seeder.service.js +51 -30
  243. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  244. package/dist/seeders/module-test-data.service.d.ts +3 -1
  245. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  246. package/dist/seeders/module-test-data.service.js +8 -2
  247. package/dist/seeders/module-test-data.service.js.map +1 -1
  248. package/dist/seeders/seed-data/solid-core-metadata.json +290 -78
  249. package/dist/services/api-key.service.d.ts.map +1 -1
  250. package/dist/services/api-key.service.js +1 -1
  251. package/dist/services/api-key.service.js.map +1 -1
  252. package/dist/services/authentication.service.d.ts +9 -5
  253. package/dist/services/authentication.service.d.ts.map +1 -1
  254. package/dist/services/authentication.service.js +102 -23
  255. package/dist/services/authentication.service.js.map +1 -1
  256. package/dist/services/chatter-message.service.d.ts +16 -1
  257. package/dist/services/chatter-message.service.d.ts.map +1 -1
  258. package/dist/services/chatter-message.service.js +100 -16
  259. package/dist/services/chatter-message.service.js.map +1 -1
  260. package/dist/services/crud-helper.service.d.ts +6 -4
  261. package/dist/services/crud-helper.service.d.ts.map +1 -1
  262. package/dist/services/crud-helper.service.js +32 -48
  263. package/dist/services/crud-helper.service.js.map +1 -1
  264. package/dist/services/crud.service.d.ts +13 -1
  265. package/dist/services/crud.service.d.ts.map +1 -1
  266. package/dist/services/crud.service.js +94 -68
  267. package/dist/services/crud.service.js.map +1 -1
  268. package/dist/services/datasource-introspection.service.d.ts.map +1 -1
  269. package/dist/services/datasource-introspection.service.js.map +1 -1
  270. package/dist/services/draft-publish-helper.service.d.ts +53 -0
  271. package/dist/services/draft-publish-helper.service.d.ts.map +1 -0
  272. package/dist/services/draft-publish-helper.service.js +402 -0
  273. package/dist/services/draft-publish-helper.service.js.map +1 -0
  274. package/dist/services/field-metadata.service.d.ts +2 -2
  275. package/dist/services/field-metadata.service.d.ts.map +1 -1
  276. package/dist/services/field-metadata.service.js +4 -1
  277. package/dist/services/field-metadata.service.js.map +1 -1
  278. package/dist/services/internationalisation-helper.service.d.ts +19 -0
  279. package/dist/services/internationalisation-helper.service.d.ts.map +1 -0
  280. package/dist/services/internationalisation-helper.service.js +107 -0
  281. package/dist/services/internationalisation-helper.service.js.map +1 -0
  282. package/dist/services/locale.service.d.ts +1 -1
  283. package/dist/services/media-storage.utils.d.ts +1 -0
  284. package/dist/services/media-storage.utils.d.ts.map +1 -1
  285. package/dist/services/media-storage.utils.js +12 -1
  286. package/dist/services/media-storage.utils.js.map +1 -1
  287. package/dist/services/media.service.d.ts +3 -2
  288. package/dist/services/media.service.d.ts.map +1 -1
  289. package/dist/services/media.service.js +45 -29
  290. package/dist/services/media.service.js.map +1 -1
  291. package/dist/services/metadata-validation.service.d.ts +7 -0
  292. package/dist/services/metadata-validation.service.d.ts.map +1 -0
  293. package/dist/services/metadata-validation.service.js +42 -0
  294. package/dist/services/metadata-validation.service.js.map +1 -0
  295. package/dist/services/model-metadata.service.d.ts.map +1 -1
  296. package/dist/services/model-metadata.service.js +2 -1
  297. package/dist/services/model-metadata.service.js.map +1 -1
  298. package/dist/services/module-metadata.service.d.ts.map +1 -1
  299. package/dist/services/module-metadata.service.js +9 -1
  300. package/dist/services/module-metadata.service.js.map +1 -1
  301. package/dist/services/mpin.service.d.ts +67 -0
  302. package/dist/services/mpin.service.d.ts.map +1 -0
  303. package/dist/services/mpin.service.js +282 -0
  304. package/dist/services/mpin.service.js.map +1 -0
  305. package/dist/services/object.utils.d.ts +2 -0
  306. package/dist/services/object.utils.d.ts.map +1 -0
  307. package/dist/services/object.utils.js +11 -0
  308. package/dist/services/object.utils.js.map +1 -0
  309. package/dist/services/refresh-token-ids-storage.service.d.ts +25 -6
  310. package/dist/services/refresh-token-ids-storage.service.d.ts.map +1 -1
  311. package/dist/services/refresh-token-ids-storage.service.js +80 -42
  312. package/dist/services/refresh-token-ids-storage.service.js.map +1 -1
  313. package/dist/services/setting.service.d.ts.map +1 -1
  314. package/dist/services/setting.service.js +6 -1
  315. package/dist/services/setting.service.js.map +1 -1
  316. package/dist/services/settings/default-settings-provider.service.d.ts +248 -12
  317. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  318. package/dist/services/settings/default-settings-provider.service.js +143 -6
  319. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  320. package/dist/services/user.service.d.ts +2 -2
  321. package/dist/services/user.service.d.ts.map +1 -1
  322. package/dist/services/user.service.js +9 -3
  323. package/dist/services/user.service.js.map +1 -1
  324. package/dist/services/view-metadata.service.d.ts +1 -2
  325. package/dist/services/view-metadata.service.d.ts.map +1 -1
  326. package/dist/services/view-metadata.service.js +3 -55
  327. package/dist/services/view-metadata.service.js.map +1 -1
  328. package/dist/services/workflow/nodes/execution-fail.node.d.ts +6 -0
  329. package/dist/services/workflow/nodes/execution-fail.node.d.ts.map +1 -0
  330. package/dist/services/workflow/nodes/execution-fail.node.js +81 -0
  331. package/dist/services/workflow/nodes/execution-fail.node.js.map +1 -0
  332. package/dist/services/workflow/nodes/for-each.node.d.ts +2 -0
  333. package/dist/services/workflow/nodes/for-each.node.d.ts.map +1 -1
  334. package/dist/services/workflow/nodes/for-each.node.js +114 -5
  335. package/dist/services/workflow/nodes/for-each.node.js.map +1 -1
  336. package/dist/services/workflow/nodes/if.node.d.ts.map +1 -1
  337. package/dist/services/workflow/nodes/if.node.js +7 -0
  338. package/dist/services/workflow/nodes/if.node.js.map +1 -1
  339. package/dist/services/workflow/nodes/log-write.node.d.ts.map +1 -1
  340. package/dist/services/workflow/nodes/log-write.node.js +2 -0
  341. package/dist/services/workflow/nodes/log-write.node.js.map +1 -1
  342. package/dist/services/workflow/nodes/loop-until.node.d.ts +12 -0
  343. package/dist/services/workflow/nodes/loop-until.node.d.ts.map +1 -0
  344. package/dist/services/workflow/nodes/loop-until.node.js +281 -0
  345. package/dist/services/workflow/nodes/loop-until.node.js.map +1 -0
  346. package/dist/services/workflow/nodes/parallel.node.d.ts.map +1 -1
  347. package/dist/services/workflow/nodes/parallel.node.js +7 -0
  348. package/dist/services/workflow/nodes/parallel.node.js.map +1 -1
  349. package/dist/services/workflow/nodes/sequential.node.d.ts.map +1 -1
  350. package/dist/services/workflow/nodes/sequential.node.js +7 -0
  351. package/dist/services/workflow/nodes/sequential.node.js.map +1 -1
  352. package/dist/services/workflow/nodes/switch.node.d.ts.map +1 -1
  353. package/dist/services/workflow/nodes/switch.node.js +7 -0
  354. package/dist/services/workflow/nodes/switch.node.js.map +1 -1
  355. package/dist/services/workflow/workflow-definition-validator.service.d.ts.map +1 -1
  356. package/dist/services/workflow/workflow-definition-validator.service.js +5 -2
  357. package/dist/services/workflow/workflow-definition-validator.service.js.map +1 -1
  358. package/dist/services/workflow/workflow-expression.service.d.ts.map +1 -1
  359. package/dist/services/workflow/workflow-expression.service.js +5 -0
  360. package/dist/services/workflow/workflow-expression.service.js.map +1 -1
  361. package/dist/services/workflow/workflow-node-registry.service.d.ts +2 -1
  362. package/dist/services/workflow/workflow-node-registry.service.d.ts.map +1 -1
  363. package/dist/services/workflow/workflow-node-registry.service.js +7 -0
  364. package/dist/services/workflow/workflow-node-registry.service.js.map +1 -1
  365. package/dist/services/workflow/workflow-runtime.service.d.ts +8 -0
  366. package/dist/services/workflow/workflow-runtime.service.d.ts.map +1 -1
  367. package/dist/services/workflow/workflow-runtime.service.js +197 -32
  368. package/dist/services/workflow/workflow-runtime.service.js.map +1 -1
  369. package/dist/services/workflow-definition.service.d.ts +1 -1
  370. package/dist/solid-core.module.d.ts +1 -3
  371. package/dist/solid-core.module.d.ts.map +1 -1
  372. package/dist/solid-core.module.js +28 -40
  373. package/dist/solid-core.module.js.map +1 -1
  374. package/dist/testing/adapters/ui/playwright-adapter.d.ts +5 -0
  375. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
  376. package/dist/testing/adapters/ui/playwright-adapter.js +17 -1
  377. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
  378. package/dist/testing/adapters/ui/ui.types.d.ts +2 -0
  379. package/dist/testing/adapters/ui/ui.types.d.ts.map +1 -1
  380. package/dist/testing/adapters/ui/ui.types.js.map +1 -1
  381. package/dist/testing/reporter/console-reporter.d.ts +3 -0
  382. package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
  383. package/dist/testing/reporter/console-reporter.js +2 -0
  384. package/dist/testing/reporter/console-reporter.js.map +1 -1
  385. package/dist/testing/reporter/progress-reporter.d.ts +64 -0
  386. package/dist/testing/reporter/progress-reporter.d.ts.map +1 -0
  387. package/dist/testing/reporter/progress-reporter.js +224 -0
  388. package/dist/testing/reporter/progress-reporter.js.map +1 -0
  389. package/dist/testing/reporter/reporter.types.d.ts +3 -0
  390. package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
  391. package/dist/testing/reporter/reporter.types.js.map +1 -1
  392. package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
  393. package/dist/testing/runner/run-from-metadata.js +1 -0
  394. package/dist/testing/runner/run-from-metadata.js.map +1 -1
  395. package/dist/testing/steps/ui/actions.step.d.ts.map +1 -1
  396. package/dist/testing/steps/ui/actions.step.js +6 -2
  397. package/dist/testing/steps/ui/actions.step.js.map +1 -1
  398. package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
  399. package/dist/testing/steps/ui/assertions.step.js +11 -3
  400. package/dist/testing/steps/ui/assertions.step.js.map +1 -1
  401. package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
  402. package/dist/testing/steps/ui/form.step.js +9 -3
  403. package/dist/testing/steps/ui/form.step.js.map +1 -1
  404. package/dist/testing/steps/ui/manual.step.js +1 -1
  405. package/dist/testing/steps/ui/manual.step.js.map +1 -1
  406. package/dist/testing/steps/ui/navigation.step.d.ts.map +1 -1
  407. package/dist/testing/steps/ui/navigation.step.js +3 -1
  408. package/dist/testing/steps/ui/navigation.step.js.map +1 -1
  409. package/dist/theme/theme-registry.d.ts +14 -0
  410. package/dist/theme/theme-registry.d.ts.map +1 -0
  411. package/dist/theme/theme-registry.js +147 -0
  412. package/dist/theme/theme-registry.js.map +1 -0
  413. package/dist/types/workflow-dsl.types.d.ts +14 -0
  414. package/dist/types/workflow-dsl.types.d.ts.map +1 -1
  415. package/dist/types/workflow-dsl.types.js.map +1 -1
  416. package/package.json +2 -2
  417. package/src/commands/run-tests.command.ts +64 -4
  418. package/src/commands/seed.command.ts +19 -0
  419. package/src/config/cache.options.ts +9 -1
  420. package/src/constants/chatter-message.constants.ts +12 -0
  421. package/src/constants/draft-publish-fields.ts +5 -0
  422. package/src/constants/error-messages.ts +14 -0
  423. package/src/constants/media-file-types.ts +128 -0
  424. package/src/constants/success-messages.ts +5 -0
  425. package/src/constants/user.constants.ts +13 -0
  426. package/src/controllers/authentication.controller.ts +5 -2
  427. package/src/controllers/chatter-message.controller.ts +8 -0
  428. package/src/controllers/export-template.controller.ts +5 -3
  429. package/src/controllers/import-transaction.controller.ts +6 -6
  430. package/src/controllers/media.controller.ts +17 -6
  431. package/src/controllers/module-package.controller.ts +2 -3
  432. package/src/controllers/mpin-authentication.controller.ts +67 -0
  433. package/src/dtos/basic-filters.dto.ts +0 -4
  434. package/src/dtos/change-mpin.dto.ts +18 -0
  435. package/src/dtos/create-field-metadata.dto.ts +17 -9
  436. package/src/dtos/create-model-sequence.dto.ts +1 -1
  437. package/src/dtos/mpin-login.dto.ts +24 -0
  438. package/src/dtos/setup-mpin.dto.ts +51 -0
  439. package/src/entities/common.entity.ts +24 -0
  440. package/src/entities/dashboard-user-layout.entity.ts +2 -2
  441. package/src/entities/field-metadata.entity.ts +3 -0
  442. package/src/entities/saved-filters.entity.ts +3 -3
  443. package/src/entities/user-device-credential.entity.ts +130 -0
  444. package/src/entities/user.entity.ts +53 -36
  445. package/src/entities/view-metadata.entity.ts +2 -2
  446. package/src/entities/workflow-execution-artifact.entity.ts +4 -3
  447. package/src/entities/workflow-execution-log.entity.ts +4 -3
  448. package/src/entities/workflow-execution.entity.ts +3 -2
  449. package/src/entities/workflow-secret.entity.ts +3 -2
  450. package/src/entities/workflow-step-execution.entity.ts +3 -2
  451. package/src/entities/workflow-trigger-execution.entity.ts +7 -6
  452. package/src/factories/mail.factory.ts +7 -1
  453. package/src/filters/http-exception.filter.ts +11 -1
  454. package/src/helpers/bootstrap.helper.ts +43 -6
  455. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +90 -37
  456. package/src/helpers/file-download.helper.ts +45 -0
  457. package/src/helpers/model-metadata-helper.service.ts +32 -1
  458. package/src/helpers/security.helper.ts +35 -8
  459. package/src/helpers/solid-core-error-codes-provider.service.ts +53 -0
  460. package/src/helpers/solid-microservice-adapter.service.ts +6 -1
  461. package/src/helpers/solid-registry.ts +1 -1
  462. package/src/helpers/typeorm-db-helper.ts +12 -1
  463. package/src/index.ts +10 -0
  464. package/src/interfaces/active-user-data.interface.ts +9 -0
  465. package/src/interfaces.ts +1 -0
  466. package/src/repository/user-device-credential.repository.ts +17 -0
  467. package/src/seeders/module-metadata-seeder.service.ts +61 -39
  468. package/src/seeders/module-test-data.service.ts +6 -0
  469. package/src/seeders/seed-data/solid-core-metadata.json +290 -78
  470. package/src/services/api-key.service.ts +13 -1
  471. package/src/services/authentication.service.ts +203 -41
  472. package/src/services/chatter-message.service.ts +180 -19
  473. package/src/services/crud-helper.service.ts +35 -50
  474. package/src/services/crud.service.ts +132 -105
  475. package/src/services/datasource-introspection.service.ts +5 -0
  476. package/src/services/draft-publish-helper.service.ts +581 -0
  477. package/src/services/field-metadata.service.ts +5 -2
  478. package/src/services/internationalisation-helper.service.ts +148 -0
  479. package/src/services/media-storage.utils.ts +26 -1
  480. package/src/services/media.service.ts +68 -36
  481. package/src/services/metadata-validation.service.ts +39 -0
  482. package/src/services/model-metadata.service.ts +4 -1
  483. package/src/services/module-metadata.service.ts +10 -1
  484. package/src/services/mpin.service.ts +447 -0
  485. package/src/services/object.utils.ts +10 -0
  486. package/src/services/refresh-token-ids-storage.service.ts +229 -90
  487. package/src/services/setting.service.ts +8 -1
  488. package/src/services/settings/default-settings-provider.service.ts +154 -6
  489. package/src/services/user.service.ts +18 -3
  490. package/src/services/view-metadata.service.ts +5 -145
  491. package/src/services/workflow/nodes/execution-fail.node.ts +82 -0
  492. package/src/services/workflow/nodes/for-each.node.ts +140 -6
  493. package/src/services/workflow/nodes/if.node.ts +7 -0
  494. package/src/services/workflow/nodes/log-write.node.ts +2 -0
  495. package/src/services/workflow/nodes/loop-until.node.ts +343 -0
  496. package/src/services/workflow/nodes/parallel.node.ts +7 -0
  497. package/src/services/workflow/nodes/sequential.node.ts +7 -0
  498. package/src/services/workflow/nodes/switch.node.ts +7 -0
  499. package/src/services/workflow/workflow-definition-validator.service.ts +5 -2
  500. package/src/services/workflow/workflow-expression.service.ts +5 -0
  501. package/src/services/workflow/workflow-node-registry.service.ts +11 -0
  502. package/src/services/workflow/workflow-runtime.service.ts +274 -39
  503. package/src/solid-core.module.ts +46 -15
  504. package/src/testing/README.md +75 -3
  505. package/src/testing/adapters/ui/playwright-adapter.ts +25 -0
  506. package/src/testing/adapters/ui/ui.types.ts +2 -0
  507. package/src/testing/reporter/console-reporter.ts +4 -0
  508. package/src/testing/reporter/progress-reporter.ts +251 -0
  509. package/src/testing/reporter/reporter.types.ts +3 -0
  510. package/src/testing/runner/run-from-metadata.ts +1 -0
  511. package/src/testing/steps/ui/actions.step.ts +8 -4
  512. package/src/testing/steps/ui/assertions.step.ts +18 -5
  513. package/src/testing/steps/ui/form.step.ts +16 -6
  514. package/src/testing/steps/ui/manual.step.ts +1 -1
  515. package/src/testing/steps/ui/navigation.step.ts +4 -2
  516. package/src/theme/theme-registry.ts +181 -0
  517. package/src/types/workflow-dsl.types.ts +43 -0
@@ -110,10 +110,10 @@ declare const getSolidCoreSettings: (isProd: boolean) => [{
110
110
  readonly helpText: "Controls whether the app logo appears inside the authentication form or inside the image panel.";
111
111
  }, {
112
112
  readonly moduleName: "solid-core";
113
- readonly key: "rowClickAction";
113
+ readonly key: "recordClickAction";
114
114
  readonly value: "edit";
115
115
  readonly level: SettingLevel.SystemAdminEditable;
116
- readonly label: "Row Click Action";
116
+ readonly label: "Record Click Action";
117
117
  readonly group: "app-settings";
118
118
  readonly sortOrder: 45;
119
119
  readonly controlType: "selectionStatic";
@@ -124,7 +124,7 @@ declare const getSolidCoreSettings: (isProd: boolean) => [{
124
124
  readonly label: "View";
125
125
  readonly value: "view";
126
126
  }];
127
- readonly helpText: "Decides whether clicking a list row opens the record in edit mode or view mode.";
127
+ readonly helpText: "Decides whether clicking a record in List, Card, Kanban, or Tree View opens it in edit mode or view mode.";
128
128
  }, {
129
129
  readonly moduleName: "solid-core";
130
130
  readonly key: "showAuthContent";
@@ -197,14 +197,42 @@ declare const getSolidCoreSettings: (isProd: boolean) => [{
197
197
  readonly helpText: "Privacy policy URL shown when legal links are enabled.";
198
198
  }, {
199
199
  readonly moduleName: "solid-core";
200
- readonly key: "enableDarkMode";
200
+ readonly key: "showThemeToggle";
201
201
  readonly value: true;
202
202
  readonly level: SettingLevel.SystemAdminEditable;
203
- readonly label: "Enable Dark Mode";
203
+ readonly label: "Show Theme Toggle";
204
204
  readonly group: "app-settings";
205
205
  readonly sortOrder: 120;
206
206
  readonly controlType: "boolean";
207
- readonly helpText: "Enables dark theme support for frontend surfaces that honor the global appearance setting.";
207
+ readonly helpText: "Shows the theme toggle in the frontend so users can switch between light and dark themes.";
208
+ }, {
209
+ readonly moduleName: "solid-core";
210
+ readonly key: "lightTheme";
211
+ readonly value: string;
212
+ readonly level: SettingLevel.SystemAdminEditable;
213
+ readonly label: "Light Theme";
214
+ readonly group: "app-settings";
215
+ readonly sortOrder: 125;
216
+ readonly controlType: "selectionStatic";
217
+ readonly options: {
218
+ label: string;
219
+ value: string;
220
+ }[];
221
+ readonly helpText: "Selects the theme used whenever the application is in light mode.";
222
+ }, {
223
+ readonly moduleName: "solid-core";
224
+ readonly key: "darkTheme";
225
+ readonly value: string;
226
+ readonly level: SettingLevel.SystemAdminEditable;
227
+ readonly label: "Dark Theme";
228
+ readonly group: "app-settings";
229
+ readonly sortOrder: 126;
230
+ readonly controlType: "selectionStatic";
231
+ readonly options: {
232
+ label: string;
233
+ value: string;
234
+ }[];
235
+ readonly helpText: "Selects the theme used whenever the application is in dark mode.";
208
236
  }, {
209
237
  readonly moduleName: "solid-core";
210
238
  readonly key: "copyright";
@@ -435,6 +463,16 @@ declare const getSolidCoreSettings: (isProd: boolean) => [{
435
463
  readonly value: "s3";
436
464
  }];
437
465
  readonly helpText: "Default storage implementation used for file handling, such as local disk or S3.";
466
+ }, {
467
+ readonly moduleName: "solid-core";
468
+ readonly key: "maxMediaFileSizeMb";
469
+ readonly value: number;
470
+ readonly level: SettingLevel.SystemAdminReadonly;
471
+ readonly label: "Max Media File Size (MB)";
472
+ readonly group: "storage-settings";
473
+ readonly sortOrder: 45;
474
+ readonly controlType: "numeric";
475
+ readonly helpText: "Global upload size limit enforced by Multer under every per-field mediaMaxSizeKb restriction. Read-only here: it's applied once at process start, so changing AB_MEDIA_MAX_FILE_SIZE_MB requires an app restart to take effect - editing this in the admin UI would not do that.";
438
476
  }, {
439
477
  readonly moduleName: "solid-core";
440
478
  readonly key: "S3_AWS_ACCESS_KEY";
@@ -1045,6 +1083,66 @@ declare const getSolidCoreSettings: (isProd: boolean) => [{
1045
1083
  readonly group: "authentication-settings";
1046
1084
  readonly sortOrder: 200;
1047
1085
  readonly controlType: "boolean";
1086
+ }, {
1087
+ readonly moduleName: "solid-core";
1088
+ readonly key: "mpinEnabled";
1089
+ readonly value: false;
1090
+ readonly level: SettingLevel.SystemAdminEditable;
1091
+ readonly label: "Enable MPIN Sign-in";
1092
+ readonly group: "authentication-settings";
1093
+ readonly sortOrder: 210;
1094
+ readonly controlType: "boolean";
1095
+ readonly helpText: "Allows users to set a short device PIN for faster sign-in. Every MPIN route returns 404 while this is off.";
1096
+ }, {
1097
+ readonly moduleName: "solid-core";
1098
+ readonly key: "mpinRegex";
1099
+ readonly value: string;
1100
+ readonly level: SettingLevel.SystemAdminEditable;
1101
+ readonly label: "MPIN Format";
1102
+ readonly group: "authentication-settings";
1103
+ readonly sortOrder: 211;
1104
+ readonly controlType: "shortText";
1105
+ readonly helpText: "Regular expression the MPIN must match. Sole authority on MPIN length - the default allows 4 to 6 digits. Predictable PINs (repeated or sequential digits) are rejected separately.";
1106
+ }, {
1107
+ readonly moduleName: "solid-core";
1108
+ readonly key: "mpinMaxFailedAttempts";
1109
+ readonly value: number;
1110
+ readonly level: SettingLevel.SystemAdminEditable;
1111
+ readonly label: "MPIN Attempts Before Lockout";
1112
+ readonly group: "authentication-settings";
1113
+ readonly sortOrder: 212;
1114
+ readonly controlType: "numeric";
1115
+ readonly helpText: "Cumulative failed attempts that trigger a temporary lockout. The counter resets only on a successful MPIN sign-in, not when the lockout expires.";
1116
+ }, {
1117
+ readonly moduleName: "solid-core";
1118
+ readonly key: "mpinLockoutDuration";
1119
+ readonly value: number;
1120
+ readonly level: SettingLevel.SystemAdminEditable;
1121
+ readonly label: "MPIN Lockout Duration (seconds)";
1122
+ readonly group: "authentication-settings";
1123
+ readonly sortOrder: 213;
1124
+ readonly controlType: "numeric";
1125
+ readonly helpText: "How long the temporary lockout lasts.";
1126
+ }, {
1127
+ readonly moduleName: "solid-core";
1128
+ readonly key: "mpinMaxTotalFailedAttempts";
1129
+ readonly value: number;
1130
+ readonly level: SettingLevel.SystemAdminEditable;
1131
+ readonly label: "MPIN Attempts Before Permanent Deactivation";
1132
+ readonly group: "authentication-settings";
1133
+ readonly sortOrder: 214;
1134
+ readonly controlType: "numeric";
1135
+ readonly helpText: "Cumulative failed attempts that permanently disable MPIN on that device. Must exceed the lockout threshold. The account itself is never locked - the user signs in normally and sets MPIN up again.";
1136
+ }, {
1137
+ readonly moduleName: "solid-core";
1138
+ readonly key: "mpinMaxDevicesPerUser";
1139
+ readonly value: number;
1140
+ readonly level: SettingLevel.SystemAdminEditable;
1141
+ readonly label: "Max MPIN Devices Per User";
1142
+ readonly group: "authentication-settings";
1143
+ readonly sortOrder: 215;
1144
+ readonly controlType: "numeric";
1145
+ readonly helpText: "At the cap the least recently used credential is evicted rather than the setup rejected, so repeated app reinstalls cannot lock a user out of MPIN setup.";
1048
1146
  }, {
1049
1147
  readonly moduleName: "solid-core";
1050
1148
  readonly key: "queuesDefaultBroker";
@@ -1277,6 +1375,26 @@ declare const getSolidCoreSettings: (isProd: boolean) => [{
1277
1375
  readonly key: "metaWhatsappAppSecret";
1278
1376
  readonly value: string;
1279
1377
  readonly level: SettingLevel.SystemEnv;
1378
+ }, {
1379
+ readonly moduleName: "solid-core";
1380
+ readonly key: "uiTestDefaultTimeoutMs";
1381
+ readonly value: number;
1382
+ readonly level: SettingLevel.SystemAdminEditable;
1383
+ readonly label: "UI Test Default Timeout (ms)";
1384
+ readonly group: "testing-settings";
1385
+ readonly sortOrder: 10;
1386
+ readonly controlType: "numeric";
1387
+ readonly helpText: "How long UI test steps wait for an element before failing. Raise this if tests time out on slow screens. Overridden by the --ui-timeout-ms flag and by a per-step timeoutMs.";
1388
+ }, {
1389
+ readonly moduleName: "solid-core";
1390
+ readonly key: "uiTestNavigationTimeoutMs";
1391
+ readonly value: number;
1392
+ readonly level: SettingLevel.SystemAdminEditable;
1393
+ readonly label: "UI Test Navigation Timeout (ms)";
1394
+ readonly group: "testing-settings";
1395
+ readonly sortOrder: 20;
1396
+ readonly controlType: "numeric";
1397
+ readonly helpText: "How long the ui.goto step waits for a page to load before failing. Falls back to the UI test default timeout.";
1280
1398
  }];
1281
1399
  export type SolidCoreSetting = ReturnType<typeof getSolidCoreSettings>[number]["key"];
1282
1400
  export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvider {
@@ -1389,10 +1507,10 @@ export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvid
1389
1507
  readonly helpText: "Controls whether the app logo appears inside the authentication form or inside the image panel.";
1390
1508
  }, {
1391
1509
  readonly moduleName: "solid-core";
1392
- readonly key: "rowClickAction";
1510
+ readonly key: "recordClickAction";
1393
1511
  readonly value: "edit";
1394
1512
  readonly level: SettingLevel.SystemAdminEditable;
1395
- readonly label: "Row Click Action";
1513
+ readonly label: "Record Click Action";
1396
1514
  readonly group: "app-settings";
1397
1515
  readonly sortOrder: 45;
1398
1516
  readonly controlType: "selectionStatic";
@@ -1403,7 +1521,7 @@ export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvid
1403
1521
  readonly label: "View";
1404
1522
  readonly value: "view";
1405
1523
  }];
1406
- readonly helpText: "Decides whether clicking a list row opens the record in edit mode or view mode.";
1524
+ readonly helpText: "Decides whether clicking a record in List, Card, Kanban, or Tree View opens it in edit mode or view mode.";
1407
1525
  }, {
1408
1526
  readonly moduleName: "solid-core";
1409
1527
  readonly key: "showAuthContent";
@@ -1476,14 +1594,42 @@ export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvid
1476
1594
  readonly helpText: "Privacy policy URL shown when legal links are enabled.";
1477
1595
  }, {
1478
1596
  readonly moduleName: "solid-core";
1479
- readonly key: "enableDarkMode";
1597
+ readonly key: "showThemeToggle";
1480
1598
  readonly value: true;
1481
1599
  readonly level: SettingLevel.SystemAdminEditable;
1482
- readonly label: "Enable Dark Mode";
1600
+ readonly label: "Show Theme Toggle";
1483
1601
  readonly group: "app-settings";
1484
1602
  readonly sortOrder: 120;
1485
1603
  readonly controlType: "boolean";
1486
- readonly helpText: "Enables dark theme support for frontend surfaces that honor the global appearance setting.";
1604
+ readonly helpText: "Shows the theme toggle in the frontend so users can switch between light and dark themes.";
1605
+ }, {
1606
+ readonly moduleName: "solid-core";
1607
+ readonly key: "lightTheme";
1608
+ readonly value: string;
1609
+ readonly level: SettingLevel.SystemAdminEditable;
1610
+ readonly label: "Light Theme";
1611
+ readonly group: "app-settings";
1612
+ readonly sortOrder: 125;
1613
+ readonly controlType: "selectionStatic";
1614
+ readonly options: {
1615
+ label: string;
1616
+ value: string;
1617
+ }[];
1618
+ readonly helpText: "Selects the theme used whenever the application is in light mode.";
1619
+ }, {
1620
+ readonly moduleName: "solid-core";
1621
+ readonly key: "darkTheme";
1622
+ readonly value: string;
1623
+ readonly level: SettingLevel.SystemAdminEditable;
1624
+ readonly label: "Dark Theme";
1625
+ readonly group: "app-settings";
1626
+ readonly sortOrder: 126;
1627
+ readonly controlType: "selectionStatic";
1628
+ readonly options: {
1629
+ label: string;
1630
+ value: string;
1631
+ }[];
1632
+ readonly helpText: "Selects the theme used whenever the application is in dark mode.";
1487
1633
  }, {
1488
1634
  readonly moduleName: "solid-core";
1489
1635
  readonly key: "copyright";
@@ -1714,6 +1860,16 @@ export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvid
1714
1860
  readonly value: "s3";
1715
1861
  }];
1716
1862
  readonly helpText: "Default storage implementation used for file handling, such as local disk or S3.";
1863
+ }, {
1864
+ readonly moduleName: "solid-core";
1865
+ readonly key: "maxMediaFileSizeMb";
1866
+ readonly value: number;
1867
+ readonly level: SettingLevel.SystemAdminReadonly;
1868
+ readonly label: "Max Media File Size (MB)";
1869
+ readonly group: "storage-settings";
1870
+ readonly sortOrder: 45;
1871
+ readonly controlType: "numeric";
1872
+ readonly helpText: "Global upload size limit enforced by Multer under every per-field mediaMaxSizeKb restriction. Read-only here: it's applied once at process start, so changing AB_MEDIA_MAX_FILE_SIZE_MB requires an app restart to take effect - editing this in the admin UI would not do that.";
1717
1873
  }, {
1718
1874
  readonly moduleName: "solid-core";
1719
1875
  readonly key: "S3_AWS_ACCESS_KEY";
@@ -2324,6 +2480,66 @@ export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvid
2324
2480
  readonly group: "authentication-settings";
2325
2481
  readonly sortOrder: 200;
2326
2482
  readonly controlType: "boolean";
2483
+ }, {
2484
+ readonly moduleName: "solid-core";
2485
+ readonly key: "mpinEnabled";
2486
+ readonly value: false;
2487
+ readonly level: SettingLevel.SystemAdminEditable;
2488
+ readonly label: "Enable MPIN Sign-in";
2489
+ readonly group: "authentication-settings";
2490
+ readonly sortOrder: 210;
2491
+ readonly controlType: "boolean";
2492
+ readonly helpText: "Allows users to set a short device PIN for faster sign-in. Every MPIN route returns 404 while this is off.";
2493
+ }, {
2494
+ readonly moduleName: "solid-core";
2495
+ readonly key: "mpinRegex";
2496
+ readonly value: string;
2497
+ readonly level: SettingLevel.SystemAdminEditable;
2498
+ readonly label: "MPIN Format";
2499
+ readonly group: "authentication-settings";
2500
+ readonly sortOrder: 211;
2501
+ readonly controlType: "shortText";
2502
+ readonly helpText: "Regular expression the MPIN must match. Sole authority on MPIN length - the default allows 4 to 6 digits. Predictable PINs (repeated or sequential digits) are rejected separately.";
2503
+ }, {
2504
+ readonly moduleName: "solid-core";
2505
+ readonly key: "mpinMaxFailedAttempts";
2506
+ readonly value: number;
2507
+ readonly level: SettingLevel.SystemAdminEditable;
2508
+ readonly label: "MPIN Attempts Before Lockout";
2509
+ readonly group: "authentication-settings";
2510
+ readonly sortOrder: 212;
2511
+ readonly controlType: "numeric";
2512
+ readonly helpText: "Cumulative failed attempts that trigger a temporary lockout. The counter resets only on a successful MPIN sign-in, not when the lockout expires.";
2513
+ }, {
2514
+ readonly moduleName: "solid-core";
2515
+ readonly key: "mpinLockoutDuration";
2516
+ readonly value: number;
2517
+ readonly level: SettingLevel.SystemAdminEditable;
2518
+ readonly label: "MPIN Lockout Duration (seconds)";
2519
+ readonly group: "authentication-settings";
2520
+ readonly sortOrder: 213;
2521
+ readonly controlType: "numeric";
2522
+ readonly helpText: "How long the temporary lockout lasts.";
2523
+ }, {
2524
+ readonly moduleName: "solid-core";
2525
+ readonly key: "mpinMaxTotalFailedAttempts";
2526
+ readonly value: number;
2527
+ readonly level: SettingLevel.SystemAdminEditable;
2528
+ readonly label: "MPIN Attempts Before Permanent Deactivation";
2529
+ readonly group: "authentication-settings";
2530
+ readonly sortOrder: 214;
2531
+ readonly controlType: "numeric";
2532
+ readonly helpText: "Cumulative failed attempts that permanently disable MPIN on that device. Must exceed the lockout threshold. The account itself is never locked - the user signs in normally and sets MPIN up again.";
2533
+ }, {
2534
+ readonly moduleName: "solid-core";
2535
+ readonly key: "mpinMaxDevicesPerUser";
2536
+ readonly value: number;
2537
+ readonly level: SettingLevel.SystemAdminEditable;
2538
+ readonly label: "Max MPIN Devices Per User";
2539
+ readonly group: "authentication-settings";
2540
+ readonly sortOrder: 215;
2541
+ readonly controlType: "numeric";
2542
+ readonly helpText: "At the cap the least recently used credential is evicted rather than the setup rejected, so repeated app reinstalls cannot lock a user out of MPIN setup.";
2327
2543
  }, {
2328
2544
  readonly moduleName: "solid-core";
2329
2545
  readonly key: "queuesDefaultBroker";
@@ -2556,6 +2772,26 @@ export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvid
2556
2772
  readonly key: "metaWhatsappAppSecret";
2557
2773
  readonly value: string;
2558
2774
  readonly level: SettingLevel.SystemEnv;
2775
+ }, {
2776
+ readonly moduleName: "solid-core";
2777
+ readonly key: "uiTestDefaultTimeoutMs";
2778
+ readonly value: number;
2779
+ readonly level: SettingLevel.SystemAdminEditable;
2780
+ readonly label: "UI Test Default Timeout (ms)";
2781
+ readonly group: "testing-settings";
2782
+ readonly sortOrder: 10;
2783
+ readonly controlType: "numeric";
2784
+ readonly helpText: "How long UI test steps wait for an element before failing. Raise this if tests time out on slow screens. Overridden by the --ui-timeout-ms flag and by a per-step timeoutMs.";
2785
+ }, {
2786
+ readonly moduleName: "solid-core";
2787
+ readonly key: "uiTestNavigationTimeoutMs";
2788
+ readonly value: number;
2789
+ readonly level: SettingLevel.SystemAdminEditable;
2790
+ readonly label: "UI Test Navigation Timeout (ms)";
2791
+ readonly group: "testing-settings";
2792
+ readonly sortOrder: 20;
2793
+ readonly controlType: "numeric";
2794
+ readonly helpText: "How long the ui.goto step waits for a page to load before failing. Falls back to the UI test default timeout.";
2559
2795
  }];
2560
2796
  }
2561
2797
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"default-settings-provider.service.d.ts","sourceRoot":"","sources":["../../../src/services/settings/default-settings-provider.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-settings-provider.service.d.ts","sourceRoot":"","sources":["../../../src/services/settings/default-settings-provider.service.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIZ"}
@@ -11,8 +11,13 @@ const common_1 = require("@nestjs/common");
11
11
  const disallow_in_production_decorator_1 = require("../../decorators/disallow-in-production.decorator");
12
12
  const settings_provider_decorator_1 = require("../../decorators/settings-provider.decorator");
13
13
  const interfaces_1 = require("../../interfaces");
14
+ const theme_registry_1 = require("../../theme/theme-registry");
14
15
  exports.DEFAULT_MEDIA_UPLOAD_DIR = "media-uploads";
15
16
  exports.DEFAULT_MEDIA_FILE_STORAGE_DIR = "media-files-storage";
17
+ const timeoutFromEnv = (value, fallback) => {
18
+ const parsed = Number(value);
19
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
20
+ };
16
21
  const getSolidCoreSettings = (isProd) => [
17
22
  {
18
23
  moduleName: "solid-core",
@@ -124,10 +129,10 @@ const getSolidCoreSettings = (isProd) => [
124
129
  },
125
130
  {
126
131
  moduleName: "solid-core",
127
- key: "rowClickAction",
132
+ key: "recordClickAction",
128
133
  value: "edit",
129
134
  level: interfaces_1.SettingLevel.SystemAdminEditable,
130
- label: "Row Click Action",
135
+ label: "Record Click Action",
131
136
  group: "app-settings",
132
137
  sortOrder: 45,
133
138
  controlType: "selectionStatic",
@@ -135,7 +140,7 @@ const getSolidCoreSettings = (isProd) => [
135
140
  { label: "Edit", value: "edit" },
136
141
  { label: "View", value: "view" },
137
142
  ],
138
- helpText: "Decides whether clicking a list row opens the record in edit mode or view mode.",
143
+ helpText: "Decides whether clicking a record in List, Card, Kanban, or Tree View opens it in edit mode or view mode.",
139
144
  },
140
145
  {
141
146
  moduleName: "solid-core",
@@ -216,14 +221,44 @@ const getSolidCoreSettings = (isProd) => [
216
221
  },
217
222
  {
218
223
  moduleName: "solid-core",
219
- key: "enableDarkMode",
224
+ key: "showThemeToggle",
220
225
  value: true,
221
226
  level: interfaces_1.SettingLevel.SystemAdminEditable,
222
- label: "Enable Dark Mode",
227
+ label: "Show Theme Toggle",
223
228
  group: "app-settings",
224
229
  sortOrder: 120,
225
230
  controlType: "boolean",
226
- helpText: "Enables dark theme support for frontend surfaces that honor the global appearance setting.",
231
+ helpText: "Shows the theme toggle in the frontend so users can switch between light and dark themes.",
232
+ },
233
+ {
234
+ moduleName: "solid-core",
235
+ key: "lightTheme",
236
+ value: (0, theme_registry_1.getDefaultThemeKey)("light"),
237
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
238
+ label: "Light Theme",
239
+ group: "app-settings",
240
+ sortOrder: 125,
241
+ controlType: "selectionStatic",
242
+ options: (0, theme_registry_1.getThemesByMode)("light").map((theme) => ({
243
+ label: theme.label,
244
+ value: theme.key,
245
+ })),
246
+ helpText: "Selects the theme used whenever the application is in light mode.",
247
+ },
248
+ {
249
+ moduleName: "solid-core",
250
+ key: "darkTheme",
251
+ value: (0, theme_registry_1.getDefaultThemeKey)("dark"),
252
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
253
+ label: "Dark Theme",
254
+ group: "app-settings",
255
+ sortOrder: 126,
256
+ controlType: "selectionStatic",
257
+ options: (0, theme_registry_1.getThemesByMode)("dark").map((theme) => ({
258
+ label: theme.label,
259
+ value: theme.key,
260
+ })),
261
+ helpText: "Selects the theme used whenever the application is in dark mode.",
227
262
  },
228
263
  {
229
264
  moduleName: "solid-core",
@@ -489,6 +524,20 @@ const getSolidCoreSettings = (isProd) => [
489
524
  ],
490
525
  helpText: "Default storage implementation used for file handling, such as local disk or S3.",
491
526
  },
527
+ {
528
+ moduleName: "solid-core",
529
+ key: "maxMediaFileSizeMb",
530
+ value: (() => {
531
+ const parsedMb = Number(process.env.AB_MEDIA_MAX_FILE_SIZE_MB);
532
+ return Number.isFinite(parsedMb) && parsedMb > 0 ? parsedMb : 100;
533
+ })(),
534
+ level: interfaces_1.SettingLevel.SystemAdminReadonly,
535
+ label: "Max Media File Size (MB)",
536
+ group: "storage-settings",
537
+ sortOrder: 45,
538
+ controlType: "numeric",
539
+ helpText: "Global upload size limit enforced by Multer under every per-field mediaMaxSizeKb restriction. Read-only here: it's applied once at process start, so changing AB_MEDIA_MAX_FILE_SIZE_MB requires an app restart to take effect - editing this in the admin UI would not do that.",
540
+ },
492
541
  {
493
542
  moduleName: "solid-core",
494
543
  key: "S3_AWS_ACCESS_KEY",
@@ -1166,6 +1215,72 @@ const getSolidCoreSettings = (isProd) => [
1166
1215
  sortOrder: 200,
1167
1216
  controlType: "boolean",
1168
1217
  },
1218
+ {
1219
+ moduleName: "solid-core",
1220
+ key: "mpinEnabled",
1221
+ value: false,
1222
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1223
+ label: "Enable MPIN Sign-in",
1224
+ group: "authentication-settings",
1225
+ sortOrder: 210,
1226
+ controlType: "boolean",
1227
+ helpText: "Allows users to set a short device PIN for faster sign-in. Every MPIN route returns 404 while this is off.",
1228
+ },
1229
+ {
1230
+ moduleName: "solid-core",
1231
+ key: "mpinRegex",
1232
+ value: process.env.IAM_MPIN_REGEX ?? "^\\d{4,6}$",
1233
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1234
+ label: "MPIN Format",
1235
+ group: "authentication-settings",
1236
+ sortOrder: 211,
1237
+ controlType: "shortText",
1238
+ helpText: "Regular expression the MPIN must match. Sole authority on MPIN length - the default allows 4 to 6 digits. Predictable PINs (repeated or sequential digits) are rejected separately.",
1239
+ },
1240
+ {
1241
+ moduleName: "solid-core",
1242
+ key: "mpinMaxFailedAttempts",
1243
+ value: parseInt(process.env.IAM_MPIN_MAX_FAILED_ATTEMPTS ?? "5", 10),
1244
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1245
+ label: "MPIN Attempts Before Lockout",
1246
+ group: "authentication-settings",
1247
+ sortOrder: 212,
1248
+ controlType: "numeric",
1249
+ helpText: "Cumulative failed attempts that trigger a temporary lockout. The counter resets only on a successful MPIN sign-in, not when the lockout expires.",
1250
+ },
1251
+ {
1252
+ moduleName: "solid-core",
1253
+ key: "mpinLockoutDuration",
1254
+ value: parseInt(process.env.IAM_MPIN_LOCKOUT_DURATION ?? "900", 10),
1255
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1256
+ label: "MPIN Lockout Duration (seconds)",
1257
+ group: "authentication-settings",
1258
+ sortOrder: 213,
1259
+ controlType: "numeric",
1260
+ helpText: "How long the temporary lockout lasts.",
1261
+ },
1262
+ {
1263
+ moduleName: "solid-core",
1264
+ key: "mpinMaxTotalFailedAttempts",
1265
+ value: parseInt(process.env.IAM_MPIN_MAX_TOTAL_FAILED_ATTEMPTS ?? "10", 10),
1266
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1267
+ label: "MPIN Attempts Before Permanent Deactivation",
1268
+ group: "authentication-settings",
1269
+ sortOrder: 214,
1270
+ controlType: "numeric",
1271
+ helpText: "Cumulative failed attempts that permanently disable MPIN on that device. Must exceed the lockout threshold. The account itself is never locked - the user signs in normally and sets MPIN up again.",
1272
+ },
1273
+ {
1274
+ moduleName: "solid-core",
1275
+ key: "mpinMaxDevicesPerUser",
1276
+ value: parseInt(process.env.IAM_MPIN_MAX_DEVICES_PER_USER ?? "5", 10),
1277
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1278
+ label: "Max MPIN Devices Per User",
1279
+ group: "authentication-settings",
1280
+ sortOrder: 215,
1281
+ controlType: "numeric",
1282
+ helpText: "At the cap the least recently used credential is evicted rather than the setup rejected, so repeated app reinstalls cannot lock a user out of MPIN setup.",
1283
+ },
1169
1284
  {
1170
1285
  moduleName: "solid-core",
1171
1286
  key: "queuesDefaultBroker",
@@ -1422,6 +1537,28 @@ const getSolidCoreSettings = (isProd) => [
1422
1537
  value: process.env.COMMON_META_WHATSAPP_APP_SECRET,
1423
1538
  level: interfaces_1.SettingLevel.SystemEnv,
1424
1539
  },
1540
+ {
1541
+ moduleName: "solid-core",
1542
+ key: "uiTestDefaultTimeoutMs",
1543
+ value: timeoutFromEnv(process.env.COMMON_UI_TEST_DEFAULT_TIMEOUT_MS, 30000),
1544
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1545
+ label: "UI Test Default Timeout (ms)",
1546
+ group: "testing-settings",
1547
+ sortOrder: 10,
1548
+ controlType: "numeric",
1549
+ helpText: "How long UI test steps wait for an element before failing. Raise this if tests time out on slow screens. Overridden by the --ui-timeout-ms flag and by a per-step timeoutMs.",
1550
+ },
1551
+ {
1552
+ moduleName: "solid-core",
1553
+ key: "uiTestNavigationTimeoutMs",
1554
+ value: timeoutFromEnv(process.env.COMMON_UI_TEST_NAVIGATION_TIMEOUT_MS, timeoutFromEnv(process.env.COMMON_UI_TEST_DEFAULT_TIMEOUT_MS, 30000)),
1555
+ level: interfaces_1.SettingLevel.SystemAdminEditable,
1556
+ label: "UI Test Navigation Timeout (ms)",
1557
+ group: "testing-settings",
1558
+ sortOrder: 20,
1559
+ controlType: "numeric",
1560
+ helpText: "How long the ui.goto step waits for a page to load before failing. Falls back to the UI test default timeout.",
1561
+ },
1425
1562
  ];
1426
1563
  let SolidCoreDefaultSettingsProvider = class SolidCoreDefaultSettingsProvider {
1427
1564
  getSettings() {