@webiny/app-admin 6.6.0-alpha.1 → 6.6.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (718) hide show
  1. package/base/Admin.js +19 -2
  2. package/base/Admin.js.map +1 -1
  3. package/base/Base/DefaultFieldRenderers.js +4 -0
  4. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  5. package/base/Base/FieldRenderers/AutoCompleteRenderer.js +1 -0
  6. package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -1
  7. package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
  8. package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
  9. package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
  10. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
  11. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
  12. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
  13. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +21 -4
  14. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -1
  15. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +11 -2
  16. package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
  17. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +2 -0
  18. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +14 -5
  19. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  20. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +16 -25
  21. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  22. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +18 -3
  23. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  24. package/base/Base/FieldRenderers/ObjectRenderer/{TemplatePicker.d.ts → TemplatePicker/AddTemplateButton.d.ts} +1 -1
  25. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js +24 -0
  26. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js.map +1 -0
  27. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.d.ts +13 -0
  28. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js +21 -0
  29. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js.map +1 -0
  30. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.d.ts +3 -0
  31. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js +35 -0
  32. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js.map +1 -0
  33. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.d.ts +8 -0
  34. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js +22 -0
  35. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js.map +1 -0
  36. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.d.ts +10 -0
  37. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js +52 -0
  38. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js.map +1 -0
  39. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.d.ts +8 -0
  40. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js +16 -0
  41. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js.map +1 -0
  42. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.d.ts +10 -0
  43. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js +22 -0
  44. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js.map +1 -0
  45. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.d.ts +3 -0
  46. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js +35 -0
  47. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js.map +1 -0
  48. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.d.ts +1 -0
  49. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.js +1 -0
  50. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.d.ts +6 -0
  51. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.js +0 -0
  52. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +8 -3
  53. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +25 -17
  54. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  55. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.d.ts +1 -0
  56. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js +106 -0
  57. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js.map +1 -0
  58. package/base/Base/FieldRenderers/RadioButtonsRenderer.js +3 -2
  59. package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
  60. package/base/Base/FieldRenderers/SelectRenderer.js +4 -2
  61. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  62. package/base/Base.js +2 -1
  63. package/base/Base.js.map +1 -1
  64. package/base/createRootContainer.js +4 -0
  65. package/base/createRootContainer.js.map +1 -1
  66. package/base/resolveApiUrl.d.ts +10 -0
  67. package/base/resolveApiUrl.js +11 -3
  68. package/base/resolveApiUrl.js.map +1 -1
  69. package/base/ui/AssumedPermissionsSelector.d.ts +47 -0
  70. package/base/ui/AssumedPermissionsSelector.js +7 -0
  71. package/base/ui/AssumedPermissionsSelector.js.map +1 -0
  72. package/base/ui/DebuggerIndicator.d.ts +23 -0
  73. package/base/ui/DebuggerIndicator.js +5 -0
  74. package/base/ui/DebuggerIndicator.js.map +1 -0
  75. package/base/ui/Layout.d.ts +20 -0
  76. package/base/ui/Layout.js +2 -1
  77. package/base/ui/Layout.js.map +1 -1
  78. package/components/DeveloperMode/DeveloperMode.d.ts +1 -3
  79. package/components/DeveloperMode/DeveloperMode.js.map +1 -1
  80. package/components/Filters/Filters.js +7 -1
  81. package/components/Filters/Filters.js.map +1 -1
  82. package/components/IconPicker/IconPickerComponent.js +1 -1
  83. package/components/IconPicker/IconPickerComponent.js.map +1 -1
  84. package/components/SplitView/SplitView.d.ts +2 -2
  85. package/components/SplitView/SplitView.js +7 -7
  86. package/components/SplitView/SplitView.js.map +1 -1
  87. package/config/AdminConfig/Widget.d.ts +9 -1
  88. package/config/AdminConfig/Widget.js +6 -2
  89. package/config/AdminConfig/Widget.js.map +1 -1
  90. package/domain/Identity.js +1 -1
  91. package/domain/Identity.js.map +1 -1
  92. package/exports/admin/ui.d.ts +4 -0
  93. package/exports/admin/ui.js +4 -1
  94. package/exports/admin.d.ts +4 -0
  95. package/exports/admin.js +2 -0
  96. package/features/{aiChat/AiChatGateway.d.ts → adminAssistant/AdminAssistantGateway.d.ts} +7 -7
  97. package/features/{aiChat/AiChatGateway.js → adminAssistant/AdminAssistantGateway.js} +8 -8
  98. package/features/adminAssistant/AdminAssistantGateway.js.map +1 -0
  99. package/features/adminAssistant/AdminAssistantPresenter.d.ts +60 -0
  100. package/features/adminAssistant/AdminAssistantPresenter.js +377 -0
  101. package/features/adminAssistant/AdminAssistantPresenter.js.map +1 -0
  102. package/features/adminAssistant/abstractions.d.ts +176 -0
  103. package/features/adminAssistant/abstractions.js +6 -0
  104. package/features/adminAssistant/abstractions.js.map +1 -0
  105. package/features/adminAssistant/feature.d.ts +3 -0
  106. package/features/adminAssistant/feature.js +19 -0
  107. package/features/adminAssistant/feature.js.map +1 -0
  108. package/features/adminAssistant/index.d.ts +6 -0
  109. package/features/adminAssistant/index.js +3 -0
  110. package/features/adminAssistant/turnsFromMessages.d.ts +15 -0
  111. package/features/adminAssistant/turnsFromMessages.js +77 -0
  112. package/features/adminAssistant/turnsFromMessages.js.map +1 -0
  113. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
  114. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
  115. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
  116. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
  117. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
  118. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
  119. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
  120. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
  121. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
  122. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
  123. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
  124. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
  125. package/features/adminUsers/account/getCurrentUser/abstractions/index.d.ts +6 -0
  126. package/features/adminUsers/account/getCurrentUser/abstractions/index.js +2 -0
  127. package/features/adminUsers/account/getCurrentUser/feature.d.ts +3 -0
  128. package/features/adminUsers/account/getCurrentUser/feature.js +19 -0
  129. package/features/adminUsers/account/getCurrentUser/feature.js.map +1 -0
  130. package/features/adminUsers/account/getCurrentUser/index.d.ts +1 -0
  131. package/features/adminUsers/account/getCurrentUser/index.js +1 -0
  132. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
  133. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
  134. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
  135. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
  136. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
  137. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
  138. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
  139. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
  140. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
  141. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
  142. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
  143. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
  144. package/features/adminUsers/account/updateCurrentUser/abstractions/index.d.ts +8 -0
  145. package/features/adminUsers/account/updateCurrentUser/abstractions/index.js +2 -0
  146. package/features/adminUsers/account/updateCurrentUser/feature.d.ts +3 -0
  147. package/features/adminUsers/account/updateCurrentUser/feature.js +19 -0
  148. package/features/adminUsers/account/updateCurrentUser/feature.js.map +1 -0
  149. package/features/adminUsers/account/updateCurrentUser/index.d.ts +1 -0
  150. package/features/adminUsers/account/updateCurrentUser/index.js +1 -0
  151. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.d.ts +6 -0
  152. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js +22 -0
  153. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js.map +1 -0
  154. package/features/adminUsers/passwordPolicy/abstractions.d.ts +20 -0
  155. package/features/adminUsers/passwordPolicy/abstractions.js +5 -0
  156. package/features/adminUsers/passwordPolicy/abstractions.js.map +1 -0
  157. package/features/adminUsers/passwordPolicy/feature.d.ts +8 -0
  158. package/features/adminUsers/passwordPolicy/feature.js +18 -0
  159. package/features/adminUsers/passwordPolicy/feature.js.map +1 -0
  160. package/features/adminUsers/passwordPolicy/index.d.ts +3 -0
  161. package/features/adminUsers/passwordPolicy/index.js +3 -0
  162. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.d.ts +10 -0
  163. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js +11 -0
  164. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js.map +1 -0
  165. package/features/adminUsers/permissions/abstractions.d.ts +17 -0
  166. package/features/adminUsers/permissions/abstractions.js +6 -0
  167. package/features/adminUsers/permissions/abstractions.js.map +1 -0
  168. package/features/adminUsers/permissions/feature.d.ts +14 -0
  169. package/features/adminUsers/permissions/feature.js +7 -0
  170. package/features/adminUsers/permissions/feature.js.map +1 -0
  171. package/features/adminUsers/permissionsSchema.d.ts +10 -0
  172. package/features/adminUsers/permissionsSchema.js +18 -0
  173. package/features/adminUsers/permissionsSchema.js.map +1 -0
  174. package/features/adminUsers/users/createUser/CreateUserGateway.d.ts +11 -0
  175. package/features/adminUsers/users/createUser/CreateUserGateway.js +49 -0
  176. package/features/adminUsers/users/createUser/CreateUserGateway.js.map +1 -0
  177. package/features/adminUsers/users/createUser/CreateUserUseCase.d.ts +10 -0
  178. package/features/adminUsers/users/createUser/CreateUserUseCase.js +18 -0
  179. package/features/adminUsers/users/createUser/CreateUserUseCase.js.map +1 -0
  180. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
  181. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js +5 -0
  182. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
  183. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
  184. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js +5 -0
  185. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
  186. package/features/adminUsers/users/createUser/abstractions/index.d.ts +2 -0
  187. package/features/adminUsers/users/createUser/abstractions/index.js +2 -0
  188. package/features/adminUsers/users/createUser/feature.d.ts +3 -0
  189. package/features/adminUsers/users/createUser/feature.js +19 -0
  190. package/features/adminUsers/users/createUser/feature.js.map +1 -0
  191. package/features/adminUsers/users/createUser/index.d.ts +2 -0
  192. package/features/adminUsers/users/createUser/index.js +2 -0
  193. package/features/adminUsers/users/deleteUser/DeleteUserGateway.d.ts +11 -0
  194. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js +40 -0
  195. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js.map +1 -0
  196. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
  197. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js +18 -0
  198. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js.map +1 -0
  199. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
  200. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
  201. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
  202. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
  203. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
  204. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
  205. package/features/adminUsers/users/deleteUser/abstractions/index.d.ts +2 -0
  206. package/features/adminUsers/users/deleteUser/abstractions/index.js +2 -0
  207. package/features/adminUsers/users/deleteUser/feature.d.ts +3 -0
  208. package/features/adminUsers/users/deleteUser/feature.js +19 -0
  209. package/features/adminUsers/users/deleteUser/feature.js.map +1 -0
  210. package/features/adminUsers/users/deleteUser/index.d.ts +2 -0
  211. package/features/adminUsers/users/deleteUser/index.js +2 -0
  212. package/features/adminUsers/users/getUser/GetUserGateway.d.ts +11 -0
  213. package/features/adminUsers/users/getUser/GetUserGateway.js +57 -0
  214. package/features/adminUsers/users/getUser/GetUserGateway.js.map +1 -0
  215. package/features/adminUsers/users/getUser/GetUserUseCase.d.ts +10 -0
  216. package/features/adminUsers/users/getUser/GetUserUseCase.js +18 -0
  217. package/features/adminUsers/users/getUser/GetUserUseCase.js.map +1 -0
  218. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
  219. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js +5 -0
  220. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js.map +1 -0
  221. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
  222. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js +5 -0
  223. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
  224. package/features/adminUsers/users/getUser/abstractions/index.d.ts +2 -0
  225. package/features/adminUsers/users/getUser/abstractions/index.js +2 -0
  226. package/features/adminUsers/users/getUser/feature.d.ts +3 -0
  227. package/features/adminUsers/users/getUser/feature.js +19 -0
  228. package/features/adminUsers/users/getUser/feature.js.map +1 -0
  229. package/features/adminUsers/users/getUser/index.d.ts +2 -0
  230. package/features/adminUsers/users/getUser/index.js +2 -0
  231. package/features/adminUsers/users/listUsers/ListUsersGateway.d.ts +11 -0
  232. package/features/adminUsers/users/listUsers/ListUsersGateway.js +39 -0
  233. package/features/adminUsers/users/listUsers/ListUsersGateway.js.map +1 -0
  234. package/features/adminUsers/users/listUsers/ListUsersUseCase.d.ts +10 -0
  235. package/features/adminUsers/users/listUsers/ListUsersUseCase.js +18 -0
  236. package/features/adminUsers/users/listUsers/ListUsersUseCase.js.map +1 -0
  237. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
  238. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js +5 -0
  239. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
  240. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
  241. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
  242. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
  243. package/features/adminUsers/users/listUsers/abstractions/index.d.ts +2 -0
  244. package/features/adminUsers/users/listUsers/abstractions/index.js +2 -0
  245. package/features/adminUsers/users/listUsers/feature.d.ts +3 -0
  246. package/features/adminUsers/users/listUsers/feature.js +19 -0
  247. package/features/adminUsers/users/listUsers/feature.js.map +1 -0
  248. package/features/adminUsers/users/listUsers/index.d.ts +2 -0
  249. package/features/adminUsers/users/listUsers/index.js +2 -0
  250. package/features/adminUsers/users/updateUser/UpdateUserGateway.d.ts +11 -0
  251. package/features/adminUsers/users/updateUser/UpdateUserGateway.js +59 -0
  252. package/features/adminUsers/users/updateUser/UpdateUserGateway.js.map +1 -0
  253. package/features/adminUsers/users/updateUser/UpdateUserUseCase.d.ts +10 -0
  254. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js +18 -0
  255. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js.map +1 -0
  256. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
  257. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
  258. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
  259. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
  260. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
  261. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
  262. package/features/adminUsers/users/updateUser/abstractions/index.d.ts +2 -0
  263. package/features/adminUsers/users/updateUser/abstractions/index.js +2 -0
  264. package/features/adminUsers/users/updateUser/feature.d.ts +3 -0
  265. package/features/adminUsers/users/updateUser/feature.js +19 -0
  266. package/features/adminUsers/users/updateUser/feature.js.map +1 -0
  267. package/features/adminUsers/users/updateUser/index.d.ts +2 -0
  268. package/features/adminUsers/users/updateUser/index.js +2 -0
  269. package/features/aiChats/AiChatSaveError.d.ts +6 -0
  270. package/features/aiChats/AiChatSaveError.js +8 -0
  271. package/features/aiChats/AiChatSaveError.js.map +1 -0
  272. package/features/aiChats/AiChatsGateway.d.ts +18 -0
  273. package/features/aiChats/AiChatsGateway.js +132 -0
  274. package/features/aiChats/AiChatsGateway.js.map +1 -0
  275. package/features/aiChats/AiChatsRepository.d.ts +36 -0
  276. package/features/aiChats/AiChatsRepository.js +110 -0
  277. package/features/aiChats/AiChatsRepository.js.map +1 -0
  278. package/features/aiChats/AiChatsRequestError.d.ts +9 -0
  279. package/features/aiChats/AiChatsRequestError.js +8 -0
  280. package/features/aiChats/AiChatsRequestError.js.map +1 -0
  281. package/features/aiChats/abstractions.d.ts +76 -0
  282. package/features/aiChats/abstractions.js +6 -0
  283. package/features/aiChats/abstractions.js.map +1 -0
  284. package/features/aiChats/feature.d.ts +3 -0
  285. package/features/aiChats/feature.js +19 -0
  286. package/features/aiChats/feature.js.map +1 -0
  287. package/features/aiChats/index.d.ts +9 -0
  288. package/features/aiChats/index.js +3 -0
  289. package/features/aiChats/messageOf.d.ts +2 -0
  290. package/features/aiChats/messageOf.js +7 -0
  291. package/features/aiChats/messageOf.js.map +1 -0
  292. package/features/aiSettings/abstractions.d.ts +16 -0
  293. package/features/aiSettings/abstractions.js +5 -0
  294. package/features/aiSettings/abstractions.js.map +1 -0
  295. package/features/aiSettings/index.d.ts +2 -0
  296. package/features/aiSettings/index.js +1 -0
  297. package/features/assumePermissions/ApiStreamClientDecorator.d.ts +16 -0
  298. package/features/assumePermissions/ApiStreamClientDecorator.js +29 -0
  299. package/features/assumePermissions/ApiStreamClientDecorator.js.map +1 -0
  300. package/features/assumePermissions/AssumePermissionsContext.d.ts +17 -0
  301. package/features/assumePermissions/AssumePermissionsContext.js +32 -0
  302. package/features/assumePermissions/AssumePermissionsContext.js.map +1 -0
  303. package/features/assumePermissions/AssumePermissionsUseCase.d.ts +33 -0
  304. package/features/assumePermissions/AssumePermissionsUseCase.js +48 -0
  305. package/features/assumePermissions/AssumePermissionsUseCase.js.map +1 -0
  306. package/features/assumePermissions/GraphQLClientDecorator.d.ts +16 -0
  307. package/features/assumePermissions/GraphQLClientDecorator.js +29 -0
  308. package/features/assumePermissions/GraphQLClientDecorator.js.map +1 -0
  309. package/features/assumePermissions/ListAssumableTargetsGateway.d.ts +13 -0
  310. package/features/assumePermissions/ListAssumableTargetsGateway.js +74 -0
  311. package/features/assumePermissions/ListAssumableTargetsGateway.js.map +1 -0
  312. package/features/assumePermissions/ListAssumableTargetsUseCase.d.ts +16 -0
  313. package/features/assumePermissions/ListAssumableTargetsUseCase.js +38 -0
  314. package/features/assumePermissions/ListAssumableTargetsUseCase.js.map +1 -0
  315. package/features/assumePermissions/LogInUseCaseDecorator.d.ts +33 -0
  316. package/features/assumePermissions/LogInUseCaseDecorator.js +36 -0
  317. package/features/assumePermissions/LogInUseCaseDecorator.js.map +1 -0
  318. package/features/assumePermissions/LogOutUseCaseDecorator.d.ts +16 -0
  319. package/features/assumePermissions/LogOutUseCaseDecorator.js +21 -0
  320. package/features/assumePermissions/LogOutUseCaseDecorator.js.map +1 -0
  321. package/features/assumePermissions/abstractions.d.ts +78 -0
  322. package/features/assumePermissions/abstractions.js +8 -0
  323. package/features/assumePermissions/abstractions.js.map +1 -0
  324. package/features/assumePermissions/assumePermissionsHeader.d.ts +3 -0
  325. package/features/assumePermissions/assumePermissionsHeader.js +7 -0
  326. package/features/assumePermissions/assumePermissionsHeader.js.map +1 -0
  327. package/features/assumePermissions/feature.d.ts +4 -0
  328. package/features/assumePermissions/feature.js +32 -0
  329. package/features/assumePermissions/feature.js.map +1 -0
  330. package/features/assumePermissions/index.d.ts +4 -0
  331. package/features/assumePermissions/index.js +2 -0
  332. package/features/banners/Banners.d.ts +15 -0
  333. package/features/banners/Banners.js +39 -0
  334. package/features/banners/Banners.js.map +1 -0
  335. package/features/banners/abstractions.d.ts +34 -0
  336. package/features/banners/abstractions.js +5 -0
  337. package/features/banners/abstractions.js.map +1 -0
  338. package/features/banners/feature.d.ts +3 -0
  339. package/features/banners/feature.js +17 -0
  340. package/features/banners/feature.js.map +1 -0
  341. package/features/banners/index.d.ts +2 -0
  342. package/features/banners/index.js +2 -0
  343. package/features/dateFormatter/formatUtcOffset.d.ts +1 -0
  344. package/features/dateFormatter/formatUtcOffset.js +11 -0
  345. package/features/dateFormatter/formatUtcOffset.js.map +1 -0
  346. package/features/debugger/DebugSessionsRepository.d.ts +35 -0
  347. package/features/debugger/DebugSessionsRepository.js +57 -0
  348. package/features/debugger/DebugSessionsRepository.js.map +1 -0
  349. package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +17 -0
  350. package/features/debugger/GraphQLExtensionsDebugHandler.js +21 -0
  351. package/features/debugger/GraphQLExtensionsDebugHandler.js.map +1 -0
  352. package/features/debugger/GraphQLExtensionsDebugHandler.test.d.ts +1 -0
  353. package/features/debugger/GraphQLExtensionsDebugHandler.test.js +112 -0
  354. package/features/debugger/GraphQLExtensionsDebugHandler.test.js.map +1 -0
  355. package/features/debugger/abstractions.d.ts +50 -0
  356. package/features/debugger/abstractions.js +5 -0
  357. package/features/debugger/abstractions.js.map +1 -0
  358. package/features/debugger/constants.d.ts +1 -0
  359. package/features/debugger/constants.js +4 -0
  360. package/features/debugger/constants.js.map +1 -0
  361. package/features/debugger/feature.d.ts +3 -0
  362. package/features/debugger/feature.js +19 -0
  363. package/features/debugger/feature.js.map +1 -0
  364. package/features/debugger/index.d.ts +3 -0
  365. package/features/debugger/index.js +3 -0
  366. package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
  367. package/features/formModel/AccessControlRuleEvaluator.js +30 -0
  368. package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
  369. package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
  370. package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
  371. package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
  372. package/features/formModel/ConditionRuleEvaluator.js +34 -4
  373. package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
  374. package/features/formModel/Field.d.ts +14 -1
  375. package/features/formModel/Field.js +41 -5
  376. package/features/formModel/Field.js.map +1 -1
  377. package/features/formModel/FieldBuilder.d.ts +3 -3
  378. package/features/formModel/FieldBuilder.js +2 -1
  379. package/features/formModel/FieldBuilder.js.map +1 -1
  380. package/features/formModel/FieldBuilder.test.js +158 -1
  381. package/features/formModel/FieldBuilder.test.js.map +1 -1
  382. package/features/formModel/FocusManager.js +10 -3
  383. package/features/formModel/FocusManager.js.map +1 -1
  384. package/features/formModel/FormErrors.js +1 -1
  385. package/features/formModel/FormErrors.js.map +1 -1
  386. package/features/formModel/FormModel.d.ts +2 -0
  387. package/features/formModel/FormModel.js +32 -9
  388. package/features/formModel/FormModel.js.map +1 -1
  389. package/features/formModel/FormModel.test.js +835 -4
  390. package/features/formModel/FormModel.test.js.map +1 -1
  391. package/features/formModel/ObjectField.d.ts +12 -1
  392. package/features/formModel/ObjectField.js +70 -20
  393. package/features/formModel/ObjectField.js.map +1 -1
  394. package/features/formModel/Rules.test.js +224 -16
  395. package/features/formModel/Rules.test.js.map +1 -1
  396. package/features/formModel/abstractions.d.ts +56 -4
  397. package/features/formModel/abstractions.js +2 -1
  398. package/features/formModel/abstractions.js.map +1 -1
  399. package/features/formModel/createFieldRenderer.d.ts +42 -0
  400. package/features/formModel/createFieldRenderer.js +33 -10
  401. package/features/formModel/createFieldRenderer.js.map +1 -1
  402. package/features/formModel/feature.js +2 -0
  403. package/features/formModel/feature.js.map +1 -1
  404. package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +67 -4
  405. package/features/formModel/fieldTypes/DateTimeFieldType.js +88 -22
  406. package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
  407. package/features/formModel/fieldTypes/ObjectFieldType.d.ts +3 -1
  408. package/features/formModel/fieldTypes/ObjectFieldType.js +23 -1
  409. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  410. package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
  411. package/features/formModel/fieldTypes/dateLimits.js +64 -0
  412. package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
  413. package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
  414. package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
  415. package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
  416. package/features/formModel/hasSubtreeFocusRequest.d.ts +12 -0
  417. package/features/formModel/hasSubtreeFocusRequest.js +15 -0
  418. package/features/formModel/hasSubtreeFocusRequest.js.map +1 -0
  419. package/features/formModel/index.d.ts +3 -2
  420. package/features/formModel/index.js +2 -1
  421. package/features/formModel/jsonSchema/JsonSchema.d.ts +18 -0
  422. package/features/formModel/jsonSchema/JsonSchema.js +0 -0
  423. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.d.ts +4 -0
  424. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.js +0 -0
  425. package/features/formModel/jsonSchema/JsonSchemaIssue.d.ts +4 -0
  426. package/features/formModel/jsonSchema/JsonSchemaIssue.js +0 -0
  427. package/features/formModel/jsonSchema/JsonSchemaValidationResult.d.ts +5 -0
  428. package/features/formModel/jsonSchema/JsonSchemaValidationResult.js +0 -0
  429. package/features/formModel/jsonSchema/JsonSchemaValidator.d.ts +4 -0
  430. package/features/formModel/jsonSchema/JsonSchemaValidator.js +0 -0
  431. package/features/formModel/jsonSchema/PlainObject.d.ts +1 -0
  432. package/features/formModel/jsonSchema/PlainObject.js +0 -0
  433. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.d.ts +5 -0
  434. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js +154 -0
  435. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js.map +1 -0
  436. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.d.ts +1 -0
  437. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js +643 -0
  438. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js.map +1 -0
  439. package/features/formModel/jsonSchema/createJsonSchemaValidator.d.ts +3 -0
  440. package/features/formModel/jsonSchema/createJsonSchemaValidator.js +40 -0
  441. package/features/formModel/jsonSchema/createJsonSchemaValidator.js.map +1 -0
  442. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.d.ts +1 -0
  443. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js +141 -0
  444. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js.map +1 -0
  445. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.d.ts +3 -0
  446. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js +52 -0
  447. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js.map +1 -0
  448. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.d.ts +1 -0
  449. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js +250 -0
  450. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js.map +1 -0
  451. package/features/formModel/jsonSchema/getJsonSchemaKind.d.ts +3 -0
  452. package/features/formModel/jsonSchema/getJsonSchemaKind.js +31 -0
  453. package/features/formModel/jsonSchema/getJsonSchemaKind.js.map +1 -0
  454. package/features/formModel/jsonSchema/getJsonSchemaKind.test.d.ts +1 -0
  455. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js +123 -0
  456. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js.map +1 -0
  457. package/features/formModel/jsonSchema/isPlainObject.d.ts +2 -0
  458. package/features/formModel/jsonSchema/isPlainObject.js +4 -0
  459. package/features/formModel/jsonSchema/isPlainObject.js.map +1 -0
  460. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.d.ts +3 -0
  461. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js +30 -0
  462. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js.map +1 -0
  463. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.d.ts +1 -0
  464. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js +207 -0
  465. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js.map +1 -0
  466. package/features/formModel/jsonSchema/normalizeJsonSchema.d.ts +2 -0
  467. package/features/formModel/jsonSchema/normalizeJsonSchema.js +10 -0
  468. package/features/formModel/jsonSchema/normalizeJsonSchema.js.map +1 -0
  469. package/features/formModel/renderers.d.ts +1 -0
  470. package/features/formModel/renderers.js +1 -0
  471. package/features/notifications/Notifications.d.ts +1 -0
  472. package/features/notifications/Notifications.js +3 -0
  473. package/features/notifications/Notifications.js.map +1 -1
  474. package/features/notifications/Notifications.test.d.ts +1 -0
  475. package/features/notifications/Notifications.test.js +106 -0
  476. package/features/notifications/Notifications.test.js.map +1 -0
  477. package/features/notifications/NotificationsRenderer.d.ts +2 -1
  478. package/features/notifications/NotificationsRenderer.js +23 -4
  479. package/features/notifications/NotificationsRenderer.js.map +1 -1
  480. package/features/notifications/NotificationsRenderer.test.d.ts +1 -0
  481. package/features/notifications/NotificationsRenderer.test.js +261 -0
  482. package/features/notifications/NotificationsRenderer.test.js.map +1 -0
  483. package/features/notifications/abstractions.d.ts +13 -2
  484. package/features/notifications/abstractions.js.map +1 -1
  485. package/features/security/LogIn/LogInUseCase.d.ts +0 -1
  486. package/features/security/LogIn/LogInUseCase.js +2 -5
  487. package/features/security/LogIn/LogInUseCase.js.map +1 -1
  488. package/features/security/LogIn/hasAppPermissions.d.ts +2 -0
  489. package/features/security/LogIn/hasAppPermissions.js +8 -0
  490. package/features/security/LogIn/hasAppPermissions.js.map +1 -0
  491. package/features/wcp/ReactLicense.d.ts +6 -1
  492. package/features/wcp/ReactLicense.js +17 -2
  493. package/features/wcp/ReactLicense.js.map +1 -1
  494. package/features/wcp/WcpGateway.js +4 -0
  495. package/features/wcp/WcpGateway.js.map +1 -1
  496. package/hooks/useHotkeys.js +6 -4
  497. package/hooks/useHotkeys.js.map +1 -1
  498. package/index.d.ts +27 -3
  499. package/index.js +23 -6
  500. package/modules/AccessManagementExtension.js +3 -1
  501. package/modules/AccessManagementExtension.js.map +1 -1
  502. package/modules/DebuggerExtension.d.ts +2 -0
  503. package/modules/DebuggerExtension.js +55 -0
  504. package/modules/DebuggerExtension.js.map +1 -0
  505. package/package.json +41 -41
  506. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +1 -2
  507. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
  508. package/presentation/accessManagement/roles/RolesPresenter.js +1 -2
  509. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
  510. package/presentation/accessManagement/roles/components/RolesDataList.d.ts +10 -0
  511. package/presentation/accessManagement/roles/components/RolesDataList.js +146 -0
  512. package/presentation/accessManagement/roles/components/RolesDataList.js.map +1 -0
  513. package/presentation/accessManagement/roles/components/RolesForm.d.ts +13 -0
  514. package/presentation/accessManagement/roles/components/RolesForm.js +114 -0
  515. package/presentation/accessManagement/roles/components/RolesForm.js.map +1 -0
  516. package/presentation/accessManagement/roles/components/RolesView.js +6 -216
  517. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
  518. package/presentation/accessManagement/teams/TeamsPresenter.js +1 -2
  519. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
  520. package/presentation/accessManagement/teams/components/TeamsDataList.d.ts +10 -0
  521. package/presentation/accessManagement/teams/components/TeamsDataList.js +146 -0
  522. package/presentation/accessManagement/teams/components/TeamsDataList.js.map +1 -0
  523. package/presentation/accessManagement/teams/components/TeamsForm.d.ts +13 -0
  524. package/presentation/accessManagement/teams/components/TeamsForm.js +96 -0
  525. package/presentation/accessManagement/teams/components/TeamsForm.js.map +1 -0
  526. package/presentation/accessManagement/teams/components/TeamsView.js +6 -198
  527. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
  528. package/presentation/adminUsers/AdminUsers.d.ts +10 -0
  529. package/presentation/adminUsers/AdminUsers.js +77 -0
  530. package/presentation/adminUsers/AdminUsers.js.map +1 -0
  531. package/presentation/adminUsers/SecurityPermission.d.ts +2 -0
  532. package/presentation/adminUsers/SecurityPermission.js +15 -0
  533. package/presentation/adminUsers/SecurityPermission.js.map +1 -0
  534. package/presentation/adminUsers/UserItem.d.ts +10 -0
  535. package/presentation/adminUsers/UserItem.js +0 -0
  536. package/presentation/adminUsers/components/AvatarImage/AvatarImage.d.ts +3 -0
  537. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js +31 -0
  538. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js.map +1 -0
  539. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
  540. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js +53 -0
  541. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js.map +1 -0
  542. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
  543. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js +28 -0
  544. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
  545. package/presentation/adminUsers/components/AvatarImage/index.d.ts +1 -0
  546. package/presentation/adminUsers/components/AvatarImage/index.js +1 -0
  547. package/presentation/adminUsers/routes.d.ts +10 -0
  548. package/presentation/adminUsers/routes.js +20 -0
  549. package/presentation/adminUsers/routes.js.map +1 -0
  550. package/presentation/adminUsers/userMenu/AccountDetails.d.ts +6 -0
  551. package/presentation/adminUsers/userMenu/AccountDetails.js +20 -0
  552. package/presentation/adminUsers/userMenu/AccountDetails.js.map +1 -0
  553. package/presentation/adminUsers/userMenu/useIsDefaultTenant.d.ts +1 -0
  554. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js +9 -0
  555. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js.map +1 -0
  556. package/presentation/adminUsers/views/Account/Account.d.ts +2 -0
  557. package/presentation/adminUsers/views/Account/Account.js +137 -0
  558. package/presentation/adminUsers/views/Account/Account.js.map +1 -0
  559. package/presentation/adminUsers/views/Account/index.d.ts +1 -0
  560. package/presentation/adminUsers/views/Account/index.js +1 -0
  561. package/presentation/adminUsers/views/Users/UsersDataList.d.ts +3 -0
  562. package/presentation/adminUsers/views/Users/UsersDataList.js +180 -0
  563. package/presentation/adminUsers/views/Users/UsersDataList.js.map +1 -0
  564. package/presentation/adminUsers/views/Users/UsersForm.d.ts +5 -0
  565. package/presentation/adminUsers/views/Users/UsersForm.js +175 -0
  566. package/presentation/adminUsers/views/Users/UsersForm.js.map +1 -0
  567. package/presentation/adminUsers/views/Users/UsersView.d.ts +2 -0
  568. package/presentation/adminUsers/views/Users/UsersView.js +15 -0
  569. package/presentation/adminUsers/views/Users/UsersView.js.map +1 -0
  570. package/presentation/adminUsers/views/Users/components/DeleteAction.d.ts +7 -0
  571. package/presentation/adminUsers/views/Users/components/DeleteAction.js +29 -0
  572. package/presentation/adminUsers/views/Users/components/DeleteAction.js.map +1 -0
  573. package/presentation/adminUsers/views/Users/hooks/useUserForm.d.ts +27 -0
  574. package/presentation/adminUsers/views/Users/hooks/useUserForm.js +101 -0
  575. package/presentation/adminUsers/views/Users/hooks/useUserForm.js.map +1 -0
  576. package/presentation/adminUsers/views/Users/search.js +21 -0
  577. package/presentation/adminUsers/views/Users/search.js.map +1 -0
  578. package/presentation/adminUsers/views/Users/search.svg +20 -0
  579. package/presentation/adminUsers/views/utils.d.ts +3 -0
  580. package/presentation/adminUsers/views/utils.js +12 -0
  581. package/presentation/adminUsers/views/utils.js.map +1 -0
  582. package/presentation/aiChats/AiChatsPanelPresenter.d.ts +28 -0
  583. package/presentation/aiChats/AiChatsPanelPresenter.js +132 -0
  584. package/presentation/aiChats/AiChatsPanelPresenter.js.map +1 -0
  585. package/presentation/aiChats/abstractions.d.ts +69 -0
  586. package/presentation/aiChats/abstractions.js +5 -0
  587. package/presentation/aiChats/abstractions.js.map +1 -0
  588. package/presentation/aiChats/feature.d.ts +3 -0
  589. package/presentation/aiChats/feature.js +17 -0
  590. package/presentation/aiChats/feature.js.map +1 -0
  591. package/presentation/aiChats/index.d.ts +2 -0
  592. package/presentation/aiChats/index.js +2 -0
  593. package/presentation/assumePermissions/AssumePermissionsPresenter.d.ts +36 -0
  594. package/presentation/assumePermissions/AssumePermissionsPresenter.js +153 -0
  595. package/presentation/assumePermissions/AssumePermissionsPresenter.js.map +1 -0
  596. package/presentation/assumePermissions/abstractions.d.ts +30 -0
  597. package/presentation/assumePermissions/abstractions.js +5 -0
  598. package/presentation/assumePermissions/abstractions.js.map +1 -0
  599. package/presentation/assumePermissions/components/AssumePermissionsButton.d.ts +14 -0
  600. package/presentation/assumePermissions/components/AssumePermissionsButton.js +42 -0
  601. package/presentation/assumePermissions/components/AssumePermissionsButton.js.map +1 -0
  602. package/presentation/assumePermissions/components/AssumedPermissionsBanner.d.ts +11 -0
  603. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js +25 -0
  604. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js.map +1 -0
  605. package/presentation/assumePermissions/components/AssumedPermissionsSelector.d.ts +2 -0
  606. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js +68 -0
  607. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js.map +1 -0
  608. package/presentation/assumePermissions/feature.d.ts +3 -0
  609. package/presentation/assumePermissions/feature.js +17 -0
  610. package/presentation/assumePermissions/feature.js.map +1 -0
  611. package/presentation/assumePermissions/index.d.ts +4 -0
  612. package/presentation/assumePermissions/index.js +4 -0
  613. package/presentation/banners/BannersPresenter.d.ts +14 -0
  614. package/presentation/banners/BannersPresenter.js +60 -0
  615. package/presentation/banners/BannersPresenter.js.map +1 -0
  616. package/presentation/banners/abstractions.d.ts +24 -0
  617. package/presentation/banners/abstractions.js +5 -0
  618. package/presentation/banners/abstractions.js.map +1 -0
  619. package/presentation/banners/components/Banner.d.ts +10 -0
  620. package/presentation/banners/components/Banner.js +32 -0
  621. package/presentation/banners/components/Banner.js.map +1 -0
  622. package/presentation/banners/components/BannerBar.d.ts +11 -0
  623. package/presentation/banners/components/BannerBar.js +51 -0
  624. package/presentation/banners/components/BannerBar.js.map +1 -0
  625. package/presentation/banners/feature.d.ts +3 -0
  626. package/presentation/banners/feature.js +17 -0
  627. package/presentation/banners/feature.js.map +1 -0
  628. package/presentation/banners/index.d.ts +6 -0
  629. package/presentation/banners/index.js +4 -0
  630. package/presentation/banners/useBanner.d.ts +10 -0
  631. package/presentation/banners/useBanner.js +15 -0
  632. package/presentation/banners/useBanner.js.map +1 -0
  633. package/presentation/commandPalette/CommandPalettePresenter.js +3 -1
  634. package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -1
  635. package/presentation/commandPalette/abstractions.d.ts +5 -0
  636. package/presentation/commandPalette/abstractions.js.map +1 -1
  637. package/presentation/commandPalette/commands/AiChatsCommand.d.ts +24 -0
  638. package/presentation/commandPalette/commands/AiChatsCommand.js +41 -0
  639. package/presentation/commandPalette/commands/AiChatsCommand.js.map +1 -0
  640. package/presentation/commandPalette/commands/AskAiCommand.d.ts +1 -0
  641. package/presentation/commandPalette/commands/AskAiCommand.js +3 -2
  642. package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -1
  643. package/presentation/commandPalette/commands/feature.js +2 -0
  644. package/presentation/commandPalette/commands/feature.js.map +1 -1
  645. package/presentation/createReactiveComponent.d.ts +1 -0
  646. package/presentation/createReactiveComponent.js +1 -0
  647. package/presentation/debugger/DebuggerPresenter.d.ts +14 -0
  648. package/presentation/debugger/DebuggerPresenter.js +45 -0
  649. package/presentation/debugger/DebuggerPresenter.js.map +1 -0
  650. package/presentation/debugger/abstractions.d.ts +17 -0
  651. package/presentation/debugger/abstractions.js +5 -0
  652. package/presentation/debugger/abstractions.js.map +1 -0
  653. package/presentation/debugger/components/DebuggerIndicator.d.ts +2 -0
  654. package/presentation/debugger/components/DebuggerIndicator.js +45 -0
  655. package/presentation/debugger/components/DebuggerIndicator.js.map +1 -0
  656. package/presentation/debugger/components/DebuggerView.d.ts +4 -0
  657. package/presentation/debugger/components/DebuggerView.js +44 -0
  658. package/presentation/debugger/components/DebuggerView.js.map +1 -0
  659. package/presentation/debugger/downloadJson.d.ts +7 -0
  660. package/presentation/debugger/downloadJson.js +17 -0
  661. package/presentation/debugger/downloadJson.js.map +1 -0
  662. package/presentation/debugger/feature.d.ts +3 -0
  663. package/presentation/debugger/feature.js +17 -0
  664. package/presentation/debugger/feature.js.map +1 -0
  665. package/presentation/debugger/routes.d.ts +4 -0
  666. package/presentation/debugger/routes.js +10 -0
  667. package/presentation/debugger/routes.js.map +1 -0
  668. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +4 -3
  669. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
  670. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
  671. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
  672. package/presentation/listPresenter/FolderAwareDataSource.d.ts +5 -0
  673. package/presentation/listPresenter/FolderAwareDataSource.js +4 -3
  674. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
  675. package/presentation/listPresenter/QueryMatcher.d.ts +28 -5
  676. package/presentation/listPresenter/QueryMatcher.js +72 -2
  677. package/presentation/listPresenter/QueryMatcher.js.map +1 -1
  678. package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
  679. package/presentation/listPresenter/QueryMatcher.test.js +345 -0
  680. package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
  681. package/presentation/trashBin/TrashBinPresenter.js +3 -1
  682. package/presentation/trashBin/TrashBinPresenter.js.map +1 -1
  683. package/presentation/trashBin/TrashBinPresenter.test.d.ts +1 -0
  684. package/presentation/trashBin/TrashBinPresenter.test.js +91 -0
  685. package/presentation/trashBin/TrashBinPresenter.test.js.map +1 -0
  686. package/presentation/trashBin/abstractions.d.ts +1 -1
  687. package/presentation/trashBin/abstractions.js.map +1 -1
  688. package/presentation/trashBin/components/BulkActions/DeleteItems.js +5 -1
  689. package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -1
  690. package/presentation/trashBin/components/BulkActions/DeleteItems.test.d.ts +1 -0
  691. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js +100 -0
  692. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js.map +1 -0
  693. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +2 -1
  694. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -1
  695. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.d.ts +1 -0
  696. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js +67 -0
  697. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js.map +1 -0
  698. package/static/svg/search.43fa797c.svg +20 -0
  699. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +0 -68
  700. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +0 -1
  701. package/features/aiChat/AiChatGateway.js.map +0 -1
  702. package/features/aiChat/AiChatPresenter.d.ts +0 -32
  703. package/features/aiChat/AiChatPresenter.js +0 -220
  704. package/features/aiChat/AiChatPresenter.js.map +0 -1
  705. package/features/aiChat/abstractions.d.ts +0 -124
  706. package/features/aiChat/abstractions.js +0 -6
  707. package/features/aiChat/abstractions.js.map +0 -1
  708. package/features/aiChat/feature.d.ts +0 -3
  709. package/features/aiChat/feature.js +0 -19
  710. package/features/aiChat/feature.js.map +0 -1
  711. package/features/aiChat/index.d.ts +0 -6
  712. package/features/aiChat/index.js +0 -3
  713. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +0 -8
  714. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +0 -17
  715. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +0 -1
  716. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.d.ts +0 -1
  717. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +0 -16
  718. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ export interface IDebugEntry {
2
+ seq: number;
3
+ namespace: string;
4
+ timestamp: number;
5
+ elapsed: number;
6
+ data: unknown;
7
+ }
8
+ /**
9
+ * What the API writes under `extensions.debug` for an identity allowed to capture.
10
+ */
11
+ export interface IDebugPayload {
12
+ enabled: boolean;
13
+ requestId?: string;
14
+ url?: string;
15
+ namespaces?: string[];
16
+ operations?: string[];
17
+ entries?: IDebugEntry[];
18
+ bytes?: number;
19
+ dropped?: number;
20
+ truncated?: boolean;
21
+ }
22
+ export interface ICollectedDebugSession extends IDebugPayload {
23
+ collectedAt: number;
24
+ }
25
+ export interface IDebugSessionsRepository {
26
+ /**
27
+ * Whether capture is on for the current identity: it holds the permission, and has not turned
28
+ * capture off itself.
29
+ */
30
+ isCaptureOn(): boolean;
31
+ /**
32
+ * Whether the current identity holds the permission at all.
33
+ */
34
+ canCapture(): boolean;
35
+ setCaptureOn(enabled: boolean): void;
36
+ getSessions(): ICollectedDebugSession[];
37
+ getEntryCount(): number;
38
+ collect(payload: IDebugPayload): void;
39
+ clear(): void;
40
+ }
41
+ /**
42
+ * Holds the debug toggle and the sessions collected from API responses.
43
+ */
44
+ export declare const DebugSessionsRepository: import("@webiny/di").Abstraction<IDebugSessionsRepository>;
45
+ export declare namespace DebugSessionsRepository {
46
+ type Interface = IDebugSessionsRepository;
47
+ type Payload = IDebugPayload;
48
+ type Entry = IDebugEntry;
49
+ type Session = ICollectedDebugSession;
50
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const DebugSessionsRepository = createAbstraction("DebugSessionsRepository");
3
+ export { DebugSessionsRepository };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/debugger/abstractions.js","sources":["../../../src/features/debugger/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface IDebugEntry {\n seq: number;\n namespace: string;\n timestamp: number;\n elapsed: number;\n data: unknown;\n}\n\n/**\n * What the API writes under `extensions.debug` for an identity allowed to capture.\n */\nexport interface IDebugPayload {\n enabled: boolean;\n requestId?: string;\n url?: string;\n namespaces?: string[];\n operations?: string[];\n entries?: IDebugEntry[];\n bytes?: number;\n dropped?: number;\n truncated?: boolean;\n}\n\nexport interface ICollectedDebugSession extends IDebugPayload {\n collectedAt: number;\n}\n\nexport interface IDebugSessionsRepository {\n /**\n * Whether capture is on for the current identity: it holds the permission, and has not turned\n * capture off itself.\n */\n isCaptureOn(): boolean;\n /**\n * Whether the current identity holds the permission at all.\n */\n canCapture(): boolean;\n setCaptureOn(enabled: boolean): void;\n getSessions(): ICollectedDebugSession[];\n getEntryCount(): number;\n collect(payload: IDebugPayload): void;\n clear(): void;\n}\n\n/**\n * Holds the debug toggle and the sessions collected from API responses.\n */\nexport const DebugSessionsRepository =\n createAbstraction<IDebugSessionsRepository>(\"DebugSessionsRepository\");\n\nexport namespace DebugSessionsRepository {\n export type Interface = IDebugSessionsRepository;\n export type Payload = IDebugPayload;\n export type Entry = IDebugEntry;\n export type Session = ICollectedDebugSession;\n}\n"],"names":["DebugSessionsRepository","createAbstraction"],"mappings":";AAiDO,MAAMA,0BACTC,kBAA4C"}
@@ -0,0 +1 @@
1
+ export declare const DEBUG_PERMISSION = "dev-tools.debug";
@@ -0,0 +1,4 @@
1
+ const DEBUG_PERMISSION = "dev-tools.debug";
2
+ export { DEBUG_PERMISSION };
3
+
4
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/debugger/constants.js","sources":["../../../src/features/debugger/constants.ts"],"sourcesContent":["export const DEBUG_PERMISSION = \"dev-tools.debug\";\n"],"names":["DEBUG_PERMISSION"],"mappings":"AAAO,MAAMA,mBAAmB"}
@@ -0,0 +1,3 @@
1
+ export declare const DebuggerFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ repository: import("./abstractions.js").IDebugSessionsRepository;
3
+ }, []>;
@@ -0,0 +1,19 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { DebugSessionsRepository } from "./abstractions.js";
3
+ import { DebugSessionsRepository as external_DebugSessionsRepository_js_DebugSessionsRepository } from "./DebugSessionsRepository.js";
4
+ import { GraphQLExtensionsDebugHandler } from "./GraphQLExtensionsDebugHandler.js";
5
+ const DebuggerFeature = createFeature({
6
+ name: "Debugger",
7
+ register (container) {
8
+ container.register(external_DebugSessionsRepository_js_DebugSessionsRepository).inSingletonScope();
9
+ container.register(GraphQLExtensionsDebugHandler).inSingletonScope();
10
+ },
11
+ resolve (container) {
12
+ return {
13
+ repository: container.resolve(DebugSessionsRepository)
14
+ };
15
+ }
16
+ });
17
+ export { DebuggerFeature };
18
+
19
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/debugger/feature.js","sources":["../../../src/features/debugger/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { DebugSessionsRepository as Abstraction } from \"./abstractions.js\";\nimport { DebugSessionsRepository } from \"./DebugSessionsRepository.js\";\nimport { GraphQLExtensionsDebugHandler } from \"./GraphQLExtensionsDebugHandler.js\";\n\nexport const DebuggerFeature = createFeature({\n name: \"Debugger\",\n register(container) {\n // Singleton: the handler writes to it and the panel and header indicator read from it.\n container.register(DebugSessionsRepository).inSingletonScope();\n container.register(GraphQLExtensionsDebugHandler).inSingletonScope();\n },\n resolve(container) {\n return {\n repository: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["DebuggerFeature","createFeature","container","DebugSessionsRepository","GraphQLExtensionsDebugHandler","Abstraction"],"mappings":";;;;AAKO,MAAMA,kBAAkBC,cAAc;IACzC,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC,6DAAyB,gBAAgB;QAC5DD,UAAU,QAAQ,CAACE,+BAA+B,gBAAgB;IACtE;IACA,SAAQF,SAAS;QACb,OAAO;YACH,YAAYA,UAAU,OAAO,CAACG;QAClC;IACJ;AACJ"}
@@ -0,0 +1,3 @@
1
+ export { DebugSessionsRepository } from "./abstractions.js";
2
+ export { DebuggerFeature } from "./feature.js";
3
+ export { DEBUG_PERMISSION } from "./constants.js";
@@ -0,0 +1,3 @@
1
+ export { DebugSessionsRepository } from "./abstractions.js";
2
+ export { DebuggerFeature } from "./feature.js";
3
+ export { DEBUG_PERMISSION } from "./constants.js";
@@ -0,0 +1,12 @@
1
+ import { IdentityContext } from "../../features/security/IdentityContext/abstractions.js";
2
+ import { RuleEvaluator } from "./abstractions.js";
3
+ declare class AccessControlRuleEvaluatorImpl implements RuleEvaluator.Interface {
4
+ private identityContext;
5
+ constructor(identityContext: IdentityContext.Interface);
6
+ canEvaluate(rule: RuleEvaluator.Rule): boolean;
7
+ evaluate(rule: RuleEvaluator.Rule): boolean;
8
+ }
9
+ export declare const AccessControlRuleEvaluator: typeof AccessControlRuleEvaluatorImpl & {
10
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IRuleEvaluator>;
11
+ };
12
+ export {};
@@ -0,0 +1,30 @@
1
+ import { IdentityContext } from "../security/IdentityContext/abstractions.js";
2
+ import { RuleEvaluator } from "./abstractions.js";
3
+ class AccessControlRuleEvaluatorImpl {
4
+ constructor(identityContext){
5
+ this.identityContext = identityContext;
6
+ }
7
+ canEvaluate(rule) {
8
+ return "accessControl" === rule.type;
9
+ }
10
+ evaluate(rule) {
11
+ const identity = this.identityContext.getIdentity();
12
+ if (!identity.isAuthenticated || "string" != typeof rule.value) return false;
13
+ const separator = rule.value.indexOf(":");
14
+ const scope = rule.value.slice(0, separator);
15
+ const id = rule.value.slice(separator + 1);
16
+ if (-1 === separator || !id) return false;
17
+ if ("admin" === scope) return identity.id === id;
18
+ if ("team" === scope) return identity.teams.some((team)=>team.slug === id);
19
+ return false;
20
+ }
21
+ }
22
+ const AccessControlRuleEvaluator = RuleEvaluator.createImplementation({
23
+ implementation: AccessControlRuleEvaluatorImpl,
24
+ dependencies: [
25
+ IdentityContext
26
+ ]
27
+ });
28
+ export { AccessControlRuleEvaluator };
29
+
30
+ //# sourceMappingURL=AccessControlRuleEvaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/formModel/AccessControlRuleEvaluator.js","sources":["../../../src/features/formModel/AccessControlRuleEvaluator.ts"],"sourcesContent":["import { IdentityContext } from \"~/features/security/IdentityContext/abstractions.js\";\nimport { RuleEvaluator } from \"./abstractions.js\";\n\nclass AccessControlRuleEvaluatorImpl implements RuleEvaluator.Interface {\n constructor(private identityContext: IdentityContext.Interface) {}\n\n canEvaluate(rule: RuleEvaluator.Rule): boolean {\n return rule.type === \"accessControl\";\n }\n\n // Rule values follow the folder-permission target format: `admin:<userId>` or `team:<teamSlug>`.\n evaluate(rule: RuleEvaluator.Rule): boolean {\n const identity = this.identityContext.getIdentity();\n if (!identity.isAuthenticated || typeof rule.value !== \"string\") {\n return false;\n }\n\n const separator = rule.value.indexOf(\":\");\n const scope = rule.value.slice(0, separator);\n const id = rule.value.slice(separator + 1);\n if (separator === -1 || !id) {\n return false;\n }\n\n if (scope === \"admin\") {\n return identity.id === id;\n }\n if (scope === \"team\") {\n return identity.teams.some(team => team.slug === id);\n }\n return false;\n }\n}\n\nexport const AccessControlRuleEvaluator = RuleEvaluator.createImplementation({\n implementation: AccessControlRuleEvaluatorImpl,\n dependencies: [IdentityContext]\n});\n"],"names":["AccessControlRuleEvaluatorImpl","identityContext","rule","identity","separator","scope","id","team","AccessControlRuleEvaluator","RuleEvaluator","IdentityContext"],"mappings":";;AAGA,MAAMA;IACF,YAAoBC,eAA0C,CAAE;aAA5CA,eAAe,GAAfA;IAA6C;IAEjE,YAAYC,IAAwB,EAAW;QAC3C,OAAOA,AAAc,oBAAdA,KAAK,IAAI;IACpB;IAGA,SAASA,IAAwB,EAAW;QACxC,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,IAAI,CAACA,SAAS,eAAe,IAAI,AAAsB,YAAtB,OAAOD,KAAK,KAAK,EAC9C,OAAO;QAGX,MAAME,YAAYF,KAAK,KAAK,CAAC,OAAO,CAAC;QACrC,MAAMG,QAAQH,KAAK,KAAK,CAAC,KAAK,CAAC,GAAGE;QAClC,MAAME,KAAKJ,KAAK,KAAK,CAAC,KAAK,CAACE,YAAY;QACxC,IAAIA,AAAc,OAAdA,aAAoB,CAACE,IACrB,OAAO;QAGX,IAAID,AAAU,YAAVA,OACA,OAAOF,SAAS,EAAE,KAAKG;QAE3B,IAAID,AAAU,WAAVA,OACA,OAAOF,SAAS,KAAK,CAAC,IAAI,CAACI,CAAAA,OAAQA,KAAK,IAAI,KAAKD;QAErD,OAAO;IACX;AACJ;AAEO,MAAME,6BAA6BC,cAAc,oBAAoB,CAAC;IACzE,gBAAgBT;IAChB,cAAc;QAACU;KAAgB;AACnC"}
@@ -0,0 +1,219 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { Container } from "@webiny/di";
3
+ import { FormModelFeature } from "./feature.js";
4
+ import { FormModelFactory } from "./abstractions.js";
5
+ import { IdentityContext } from "../security/IdentityContext/abstractions.js";
6
+ import { Identity } from "../../domain/Identity.js";
7
+ const createIdentity = (id, teamSlugs = [])=>Identity.createAuthenticated({
8
+ id,
9
+ type: "admin",
10
+ displayName: id,
11
+ roles: [],
12
+ teams: teamSlugs.map((slug)=>({
13
+ id: `${slug}-id`,
14
+ slug,
15
+ name: slug
16
+ })),
17
+ permissions: [],
18
+ profile: {
19
+ external: false
20
+ },
21
+ currentTenant: {
22
+ id: "root",
23
+ name: "Root"
24
+ },
25
+ defaultTenant: {
26
+ id: "root",
27
+ name: "Root"
28
+ }
29
+ });
30
+ const accessRule = (value, action = "hide")=>({
31
+ type: "accessControl",
32
+ target: "identity",
33
+ operator: "matches",
34
+ value,
35
+ action
36
+ });
37
+ const createContainer = (identity)=>{
38
+ const container = new Container();
39
+ FormModelFeature.register(container);
40
+ container.registerInstance(IdentityContext, {
41
+ getIdentity: ()=>identity,
42
+ setIdentity: ()=>{},
43
+ clear: ()=>{}
44
+ });
45
+ return container;
46
+ };
47
+ const createFieldForm = (identity, rules)=>createContainer(identity).resolve(FormModelFactory).create({
48
+ fields: (fields)=>({
49
+ secret: fields.text().label("Secret").rules(rules)
50
+ })
51
+ });
52
+ describe("AccessControlRuleEvaluator", ()=>{
53
+ it("hides a field from the admin the rule names", ()=>{
54
+ const form = createFieldForm(createIdentity("user-1"), [
55
+ accessRule("admin:user-1")
56
+ ]);
57
+ expect(form.field("secret").visible).toBe(false);
58
+ });
59
+ it("leaves the field visible for other admins", ()=>{
60
+ const form = createFieldForm(createIdentity("user-2"), [
61
+ accessRule("admin:user-1")
62
+ ]);
63
+ expect(form.field("secret").visible).toBe(true);
64
+ });
65
+ it("hides a field from members of the team the rule names, by team slug", ()=>{
66
+ const form = createFieldForm(createIdentity("user-2", [
67
+ "editors"
68
+ ]), [
69
+ accessRule("team:editors")
70
+ ]);
71
+ expect(form.field("secret").visible).toBe(false);
72
+ });
73
+ it("leaves the field visible for admins outside the team", ()=>{
74
+ const form = createFieldForm(createIdentity("user-2", [
75
+ "writers"
76
+ ]), [
77
+ accessRule("team:editors")
78
+ ]);
79
+ expect(form.field("secret").visible).toBe(true);
80
+ });
81
+ it("does not match a team by its id", ()=>{
82
+ const form = createFieldForm(createIdentity("user-2", [
83
+ "editors"
84
+ ]), [
85
+ accessRule("team:editors-id")
86
+ ]);
87
+ expect(form.field("secret").visible).toBe(true);
88
+ });
89
+ it("disables the field for a viewer rule", ()=>{
90
+ const form = createFieldForm(createIdentity("user-1"), [
91
+ accessRule("admin:user-1", "disable")
92
+ ]);
93
+ expect(form.field("secret").visible).toBe(true);
94
+ expect(form.field("secret").vm.disabled).toBe(true);
95
+ });
96
+ it("applies when any of several rules matches", ()=>{
97
+ const form = createFieldForm(createIdentity("user-3", [
98
+ "editors"
99
+ ]), [
100
+ accessRule("admin:user-1"),
101
+ accessRule("team:editors")
102
+ ]);
103
+ expect(form.field("secret").visible).toBe(false);
104
+ });
105
+ describe("read-only and no-access rules on one field", ()=>{
106
+ const rules = [
107
+ accessRule("admin:user-1", "disable"),
108
+ accessRule("team:team-1", "hide")
109
+ ];
110
+ it.each([
111
+ [
112
+ "matches only the read-only rule",
113
+ "user-1",
114
+ [],
115
+ true,
116
+ true
117
+ ],
118
+ [
119
+ "matches only the no-access rule",
120
+ "user-2",
121
+ [
122
+ "team-1"
123
+ ],
124
+ false,
125
+ false
126
+ ],
127
+ [
128
+ "matches both rules",
129
+ "user-1",
130
+ [
131
+ "team-1"
132
+ ],
133
+ false,
134
+ true
135
+ ],
136
+ [
137
+ "matches neither rule",
138
+ "user-2",
139
+ [
140
+ "team-2"
141
+ ],
142
+ true,
143
+ false
144
+ ]
145
+ ])("%s", (_, id, teams, visible, disabled)=>{
146
+ const form = createFieldForm(createIdentity(id, teams), rules);
147
+ expect(form.field("secret").visible).toBe(visible);
148
+ expect(form.field("secret").disabled).toBe(disabled);
149
+ });
150
+ });
151
+ it("does not match an anonymous identity", ()=>{
152
+ const form = createFieldForm(Identity.createAnonymous(), [
153
+ accessRule("admin:anonymous")
154
+ ]);
155
+ expect(form.field("secret").visible).toBe(true);
156
+ });
157
+ it.each([
158
+ [
159
+ "no scope",
160
+ "user-1"
161
+ ],
162
+ [
163
+ "unknown scope",
164
+ "role:user-1"
165
+ ],
166
+ [
167
+ "empty id",
168
+ "admin:"
169
+ ],
170
+ [
171
+ "null",
172
+ null
173
+ ],
174
+ [
175
+ "non-string",
176
+ 1
177
+ ]
178
+ ])("ignores a malformed value (%s)", (_, value)=>{
179
+ const form = createFieldForm(createIdentity("user-1"), [
180
+ accessRule(value)
181
+ ]);
182
+ expect(form.field("secret").visible).toBe(true);
183
+ });
184
+ it("hides a tab from the admin the rule names, alongside a condition rule", ()=>{
185
+ const form = createContainer(createIdentity("user-1")).resolve(FormModelFactory).create({
186
+ fields: (fields)=>({
187
+ options: fields.text().label("Options"),
188
+ map: fields.text().label("Map")
189
+ }),
190
+ layout: (layout)=>[
191
+ layout.tabs("tabs").tab("tab1", (tab)=>{
192
+ tab.label("Tab 1").layout((layout)=>[
193
+ layout.row("options")
194
+ ]);
195
+ }).tab("tab2", (tab)=>{
196
+ tab.label("Tab 2").rules([
197
+ {
198
+ type: "condition",
199
+ target: "options",
200
+ operator: "!=",
201
+ value: "map",
202
+ action: "disable"
203
+ },
204
+ accessRule("admin:user-1")
205
+ ]).layout((layout)=>[
206
+ layout.row("map")
207
+ ]);
208
+ })
209
+ ]
210
+ });
211
+ const tabs = form.vm.layout.find((n)=>"tabs" === n.type);
212
+ expect(tabs.tabs.map((t)=>t.id)).toEqual([
213
+ "tab1"
214
+ ]);
215
+ expect(form.field("map").visible).toBe(false);
216
+ });
217
+ });
218
+
219
+ //# sourceMappingURL=AccessControlRuleEvaluator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/formModel/AccessControlRuleEvaluator.test.js","sources":["../../../src/features/formModel/AccessControlRuleEvaluator.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { FormModelFeature } from \"./feature.js\";\nimport { FormModelFactory, type IRule, type ITabsNodeVM } from \"./abstractions.js\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/abstractions.js\";\nimport { Identity } from \"~/domain/Identity.js\";\n\nconst createIdentity = (id: string, teamSlugs: string[] = []) =>\n Identity.createAuthenticated({\n id,\n type: \"admin\",\n displayName: id,\n roles: [],\n teams: teamSlugs.map(slug => ({ id: `${slug}-id`, slug, name: slug })),\n permissions: [],\n profile: { external: false },\n currentTenant: { id: \"root\", name: \"Root\" },\n defaultTenant: { id: \"root\", name: \"Root\" }\n } as Identity.Data);\n\nconst accessRule = (value: IRule[\"value\"], action: IRule[\"action\"] = \"hide\"): IRule => ({\n type: \"accessControl\",\n target: \"identity\",\n operator: \"matches\",\n value,\n action\n});\n\nconst createContainer = (identity: Identity) => {\n const container = new Container();\n FormModelFeature.register(container);\n container.registerInstance(IdentityContext, {\n getIdentity: () => identity,\n setIdentity: () => {},\n clear: () => {}\n });\n return container;\n};\n\nconst createFieldForm = (identity: Identity, rules: IRule[]) =>\n createContainer(identity)\n .resolve(FormModelFactory)\n .create({\n fields: fields => ({\n secret: fields.text().label(\"Secret\").rules(rules)\n })\n });\n\ndescribe(\"AccessControlRuleEvaluator\", () => {\n it(\"hides a field from the admin the rule names\", () => {\n const form = createFieldForm(createIdentity(\"user-1\"), [accessRule(\"admin:user-1\")]);\n\n expect(form.field(\"secret\").visible).toBe(false);\n });\n\n it(\"leaves the field visible for other admins\", () => {\n const form = createFieldForm(createIdentity(\"user-2\"), [accessRule(\"admin:user-1\")]);\n\n expect(form.field(\"secret\").visible).toBe(true);\n });\n\n it(\"hides a field from members of the team the rule names, by team slug\", () => {\n const form = createFieldForm(createIdentity(\"user-2\", [\"editors\"]), [\n accessRule(\"team:editors\")\n ]);\n\n expect(form.field(\"secret\").visible).toBe(false);\n });\n\n it(\"leaves the field visible for admins outside the team\", () => {\n const form = createFieldForm(createIdentity(\"user-2\", [\"writers\"]), [\n accessRule(\"team:editors\")\n ]);\n\n expect(form.field(\"secret\").visible).toBe(true);\n });\n\n it(\"does not match a team by its id\", () => {\n const form = createFieldForm(createIdentity(\"user-2\", [\"editors\"]), [\n accessRule(\"team:editors-id\")\n ]);\n\n expect(form.field(\"secret\").visible).toBe(true);\n });\n\n it(\"disables the field for a viewer rule\", () => {\n const form = createFieldForm(createIdentity(\"user-1\"), [\n accessRule(\"admin:user-1\", \"disable\")\n ]);\n\n expect(form.field(\"secret\").visible).toBe(true);\n expect(form.field(\"secret\").vm.disabled).toBe(true);\n });\n\n it(\"applies when any of several rules matches\", () => {\n const form = createFieldForm(createIdentity(\"user-3\", [\"editors\"]), [\n accessRule(\"admin:user-1\"),\n accessRule(\"team:editors\")\n ]);\n\n expect(form.field(\"secret\").visible).toBe(false);\n });\n\n describe(\"read-only and no-access rules on one field\", () => {\n const rules = [accessRule(\"admin:user-1\", \"disable\"), accessRule(\"team:team-1\", \"hide\")];\n\n it.each([\n [\"matches only the read-only rule\", \"user-1\", [], true, true],\n [\"matches only the no-access rule\", \"user-2\", [\"team-1\"], false, false],\n [\"matches both rules\", \"user-1\", [\"team-1\"], false, true],\n [\"matches neither rule\", \"user-2\", [\"team-2\"], true, false]\n ])(\"%s\", (_, id, teams, visible, disabled) => {\n const form = createFieldForm(createIdentity(id, teams), rules);\n\n expect(form.field(\"secret\").visible).toBe(visible);\n expect(form.field(\"secret\").disabled).toBe(disabled);\n });\n });\n\n it(\"does not match an anonymous identity\", () => {\n const form = createFieldForm(Identity.createAnonymous(), [accessRule(\"admin:anonymous\")]);\n\n expect(form.field(\"secret\").visible).toBe(true);\n });\n\n it.each([\n [\"no scope\", \"user-1\"],\n [\"unknown scope\", \"role:user-1\"],\n [\"empty id\", \"admin:\"],\n [\"null\", null],\n [\"non-string\", 1]\n ])(\"ignores a malformed value (%s)\", (_, value) => {\n const form = createFieldForm(createIdentity(\"user-1\"), [accessRule(value)]);\n\n expect(form.field(\"secret\").visible).toBe(true);\n });\n\n it(\"hides a tab from the admin the rule names, alongside a condition rule\", () => {\n const form = createContainer(createIdentity(\"user-1\"))\n .resolve(FormModelFactory)\n .create({\n fields: fields => ({\n options: fields.text().label(\"Options\"),\n map: fields.text().label(\"Map\")\n }),\n layout: layout => [\n layout\n .tabs(\"tabs\")\n .tab(\"tab1\", tab => {\n tab.label(\"Tab 1\").layout(layout => [layout.row(\"options\")]);\n })\n .tab(\"tab2\", tab => {\n tab.label(\"Tab 2\")\n .rules([\n {\n type: \"condition\",\n target: \"options\",\n operator: \"!=\",\n value: \"map\",\n action: \"disable\"\n },\n accessRule(\"admin:user-1\")\n ])\n .layout(layout => [layout.row(\"map\")]);\n })\n ]\n });\n\n const tabs = form.vm.layout.find(n => n.type === \"tabs\") as ITabsNodeVM;\n expect(tabs.tabs.map(t => t.id)).toEqual([\"tab1\"]);\n expect(form.field(\"map\").visible).toBe(false);\n });\n});\n"],"names":["createIdentity","id","teamSlugs","Identity","slug","accessRule","value","action","createContainer","identity","container","Container","FormModelFeature","IdentityContext","createFieldForm","rules","FormModelFactory","fields","describe","it","form","expect","_","teams","visible","disabled","layout","tab","tabs","n","t"],"mappings":";;;;;;AAOA,MAAMA,iBAAiB,CAACC,IAAYC,YAAsB,EAAE,GACxDC,SAAS,mBAAmB,CAAC;QACzBF;QACA,MAAM;QACN,aAAaA;QACb,OAAO,EAAE;QACT,OAAOC,UAAU,GAAG,CAACE,CAAAA,OAAS;gBAAE,IAAI,GAAGA,KAAK,GAAG,CAAC;gBAAEA;gBAAM,MAAMA;YAAK;QACnE,aAAa,EAAE;QACf,SAAS;YAAE,UAAU;QAAM;QAC3B,eAAe;YAAE,IAAI;YAAQ,MAAM;QAAO;QAC1C,eAAe;YAAE,IAAI;YAAQ,MAAM;QAAO;IAC9C;AAEJ,MAAMC,aAAa,CAACC,OAAuBC,SAA0B,MAAM,GAAa;QACpF,MAAM;QACN,QAAQ;QACR,UAAU;QACVD;QACAC;IACJ;AAEA,MAAMC,kBAAkB,CAACC;IACrB,MAAMC,YAAY,IAAIC;IACtBC,iBAAiB,QAAQ,CAACF;IAC1BA,UAAU,gBAAgB,CAACG,iBAAiB;QACxC,aAAa,IAAMJ;QACnB,aAAa,KAAO;QACpB,OAAO,KAAO;IAClB;IACA,OAAOC;AACX;AAEA,MAAMI,kBAAkB,CAACL,UAAoBM,QACzCP,gBAAgBC,UACX,OAAO,CAACO,kBACR,MAAM,CAAC;QACJ,QAAQC,CAAAA,SAAW;gBACf,QAAQA,OAAO,IAAI,GAAG,KAAK,CAAC,UAAU,KAAK,CAACF;YAChD;IACJ;AAERG,SAAS,8BAA8B;IACnCC,GAAG,+CAA+C;QAC9C,MAAMC,OAAON,gBAAgBd,eAAe,WAAW;YAACK,WAAW;SAAgB;QAEnFgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAD,GAAG,6CAA6C;QAC5C,MAAMC,OAAON,gBAAgBd,eAAe,WAAW;YAACK,WAAW;SAAgB;QAEnFgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAD,GAAG,uEAAuE;QACtE,MAAMC,OAAON,gBAAgBd,eAAe,UAAU;YAAC;SAAU,GAAG;YAChEK,WAAW;SACd;QAEDgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAD,GAAG,wDAAwD;QACvD,MAAMC,OAAON,gBAAgBd,eAAe,UAAU;YAAC;SAAU,GAAG;YAChEK,WAAW;SACd;QAEDgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAD,GAAG,mCAAmC;QAClC,MAAMC,OAAON,gBAAgBd,eAAe,UAAU;YAAC;SAAU,GAAG;YAChEK,WAAW;SACd;QAEDgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAD,GAAG,wCAAwC;QACvC,MAAMC,OAAON,gBAAgBd,eAAe,WAAW;YACnDK,WAAW,gBAAgB;SAC9B;QAEDgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;QAC1CC,OAAOD,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;IAClD;IAEAD,GAAG,6CAA6C;QAC5C,MAAMC,OAAON,gBAAgBd,eAAe,UAAU;YAAC;SAAU,GAAG;YAChEK,WAAW;YACXA,WAAW;SACd;QAEDgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAF,SAAS,8CAA8C;QACnD,MAAMH,QAAQ;YAACV,WAAW,gBAAgB;YAAYA,WAAW,eAAe;SAAQ;QAExFc,GAAG,IAAI,CAAC;YACJ;gBAAC;gBAAmC;gBAAU,EAAE;gBAAE;gBAAM;aAAK;YAC7D;gBAAC;gBAAmC;gBAAU;oBAAC;iBAAS;gBAAE;gBAAO;aAAM;YACvE;gBAAC;gBAAsB;gBAAU;oBAAC;iBAAS;gBAAE;gBAAO;aAAK;YACzD;gBAAC;gBAAwB;gBAAU;oBAAC;iBAAS;gBAAE;gBAAM;aAAM;SAC9D,EAAE,MAAM,CAACG,GAAGrB,IAAIsB,OAAOC,SAASC;YAC7B,MAAML,OAAON,gBAAgBd,eAAeC,IAAIsB,QAAQR;YAExDM,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAACI;YAC1CH,OAAOD,KAAK,KAAK,CAAC,UAAU,QAAQ,EAAE,IAAI,CAACK;QAC/C;IACJ;IAEAN,GAAG,wCAAwC;QACvC,MAAMC,OAAON,gBAAgBX,SAAS,eAAe,IAAI;YAACE,WAAW;SAAmB;QAExFgB,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAD,GAAG,IAAI,CAAC;QACJ;YAAC;YAAY;SAAS;QACtB;YAAC;YAAiB;SAAc;QAChC;YAAC;YAAY;SAAS;QACtB;YAAC;YAAQ;SAAK;QACd;YAAC;YAAc;SAAE;KACpB,EAAE,kCAAkC,CAACG,GAAGhB;QACrC,MAAMc,OAAON,gBAAgBd,eAAe,WAAW;YAACK,WAAWC;SAAO;QAE1Ee,OAAOD,KAAK,KAAK,CAAC,UAAU,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEAD,GAAG,yEAAyE;QACxE,MAAMC,OAAOZ,gBAAgBR,eAAe,WACvC,OAAO,CAACgB,kBACR,MAAM,CAAC;YACJ,QAAQC,CAAAA,SAAW;oBACf,SAASA,OAAO,IAAI,GAAG,KAAK,CAAC;oBAC7B,KAAKA,OAAO,IAAI,GAAG,KAAK,CAAC;gBAC7B;YACA,QAAQS,CAAAA,SAAU;oBACdA,OACK,IAAI,CAAC,QACL,GAAG,CAAC,QAAQC,CAAAA;wBACTA,IAAI,KAAK,CAAC,SAAS,MAAM,CAACD,CAAAA,SAAU;gCAACA,OAAO,GAAG,CAAC;6BAAW;oBAC/D,GACC,GAAG,CAAC,QAAQC,CAAAA;wBACTA,IAAI,KAAK,CAAC,SACL,KAAK,CAAC;4BACH;gCACI,MAAM;gCACN,QAAQ;gCACR,UAAU;gCACV,OAAO;gCACP,QAAQ;4BACZ;4BACAtB,WAAW;yBACd,EACA,MAAM,CAACqB,CAAAA,SAAU;gCAACA,OAAO,GAAG,CAAC;6BAAO;oBAC7C;iBACP;QACL;QAEJ,MAAME,OAAOR,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAACS,CAAAA,IAAKA,AAAW,WAAXA,EAAE,IAAI;QAC5CR,OAAOO,KAAK,IAAI,CAAC,GAAG,CAACE,CAAAA,IAAKA,EAAE,EAAE,GAAG,OAAO,CAAC;YAAC;SAAO;QACjDT,OAAOD,KAAK,KAAK,CAAC,OAAO,OAAO,EAAE,IAAI,CAAC;IAC3C;AACJ"}
@@ -4,6 +4,10 @@ const isEmpty = (value)=>{
4
4
  if (Array.isArray(value) && 0 === value.length) return true;
5
5
  return false;
6
6
  };
7
+ const isEqual = (value, ruleValue)=>{
8
+ if ("boolean" == typeof value || "boolean" == typeof ruleValue) return value === ruleValue;
9
+ return value == ruleValue;
10
+ };
7
11
  class ConditionRuleEvaluatorImpl {
8
12
  canEvaluate(rule) {
9
13
  return "condition" === rule.type;
@@ -12,14 +16,28 @@ class ConditionRuleEvaluatorImpl {
12
16
  const field = safeGetField(form, rule.target);
13
17
  const value = field?.getValue() ?? null;
14
18
  switch(rule.operator){
19
+ case "==":
20
+ case "eq":
21
+ return isEqual(value, rule.value);
22
+ case "!=":
23
+ case "neq":
24
+ return !isEqual(value, rule.value);
25
+ case ">":
26
+ case "gt":
27
+ return Number(value) > Number(rule.value);
28
+ case "<":
29
+ case "lt":
30
+ return Number(value) < Number(rule.value);
31
+ case ">=":
32
+ case "gte":
33
+ return Number(value) >= Number(rule.value);
34
+ case "<=":
35
+ case "lte":
36
+ return Number(value) <= Number(rule.value);
15
37
  case "isEmpty":
16
38
  return isEmpty(value);
17
39
  case "isNotEmpty":
18
40
  return !isEmpty(value);
19
- case "eq":
20
- return value === rule.value;
21
- case "neq":
22
- return value !== rule.value;
23
41
  case "isTruthy":
24
42
  return !!value;
25
43
  case "isFalsy":
@@ -27,6 +45,18 @@ class ConditionRuleEvaluatorImpl {
27
45
  case "matches":
28
46
  if ("string" != typeof value || null === rule.value) return false;
29
47
  return value === rule.value;
48
+ case "contains":
49
+ return String(value ?? "").includes(String(rule.value ?? ""));
50
+ case "notContains":
51
+ return !String(value ?? "").includes(String(rule.value ?? ""));
52
+ case "startsWith":
53
+ return String(value ?? "").startsWith(String(rule.value ?? ""));
54
+ case "notStartsWith":
55
+ return !String(value ?? "").startsWith(String(rule.value ?? ""));
56
+ case "endsWith":
57
+ return String(value ?? "").endsWith(String(rule.value ?? ""));
58
+ case "notEndsWith":
59
+ return !String(value ?? "").endsWith(String(rule.value ?? ""));
30
60
  default:
31
61
  if ("development" === process.env.NODE_ENV) console.warn(`[FormModel] Unknown operator "${rule.operator}" in condition rule. Returning false.`);
32
62
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/ConditionRuleEvaluator.js","sources":["../../../src/features/formModel/ConditionRuleEvaluator.ts"],"sourcesContent":["import type { IFormModel } from \"./abstractions.js\";\nimport { RuleEvaluator } from \"./abstractions.js\";\n\nconst isEmpty = (value: unknown): boolean => {\n if (value === null || value === undefined || value === \"\") {\n return true;\n }\n if (Array.isArray(value) && value.length === 0) {\n return true;\n }\n return false;\n};\n\nexport class ConditionRuleEvaluatorImpl implements RuleEvaluator.Interface {\n canEvaluate(rule: RuleEvaluator.Rule): boolean {\n return rule.type === \"condition\";\n }\n\n evaluate(rule: RuleEvaluator.Rule, form: IFormModel): boolean {\n const field = safeGetField(form, rule.target);\n const value = field?.getValue() ?? null;\n\n switch (rule.operator) {\n case \"isEmpty\":\n return isEmpty(value);\n case \"isNotEmpty\":\n return !isEmpty(value);\n case \"eq\":\n return value === rule.value;\n case \"neq\":\n return value !== rule.value;\n case \"isTruthy\":\n return !!value;\n case \"isFalsy\":\n return !value;\n case \"matches\":\n if (typeof value !== \"string\" || rule.value === null) {\n return false;\n }\n return value === rule.value;\n default:\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[FormModel] Unknown operator \"${rule.operator}\" in condition rule. Returning false.`\n );\n }\n return false;\n }\n }\n}\n\nfunction safeGetField(form: IFormModel, name: string) {\n try {\n return form.field(name);\n } catch {\n return undefined;\n }\n}\n\nexport const ConditionRuleEvaluator = RuleEvaluator.createImplementation({\n implementation: ConditionRuleEvaluatorImpl,\n dependencies: []\n});\n"],"names":["isEmpty","value","Array","ConditionRuleEvaluatorImpl","rule","form","field","safeGetField","process","console","name","ConditionRuleEvaluator","RuleEvaluator"],"mappings":";AAGA,MAAMA,UAAU,CAACC;IACb,IAAIA,QAAAA,SAAyCA,AAAU,OAAVA,OACzC,OAAO;IAEX,IAAIC,MAAM,OAAO,CAACD,UAAUA,AAAiB,MAAjBA,MAAM,MAAM,EACpC,OAAO;IAEX,OAAO;AACX;AAEO,MAAME;IACT,YAAYC,IAAwB,EAAW;QAC3C,OAAOA,AAAc,gBAAdA,KAAK,IAAI;IACpB;IAEA,SAASA,IAAwB,EAAEC,IAAgB,EAAW;QAC1D,MAAMC,QAAQC,aAAaF,MAAMD,KAAK,MAAM;QAC5C,MAAMH,QAAQK,OAAO,cAAc;QAEnC,OAAQF,KAAK,QAAQ;YACjB,KAAK;gBACD,OAAOJ,QAAQC;YACnB,KAAK;gBACD,OAAO,CAACD,QAAQC;YACpB,KAAK;gBACD,OAAOA,UAAUG,KAAK,KAAK;YAC/B,KAAK;gBACD,OAAOH,UAAUG,KAAK,KAAK;YAC/B,KAAK;gBACD,OAAO,CAAC,CAACH;YACb,KAAK;gBACD,OAAO,CAACA;YACZ,KAAK;gBACD,IAAI,AAAiB,YAAjB,OAAOA,SAAsBG,AAAe,SAAfA,KAAK,KAAK,EACvC,OAAO;gBAEX,OAAOH,UAAUG,KAAK,KAAK;YAC/B;gBACI,IAAII,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ,EACpBC,QAAQ,IAAI,CACR,CAAC,8BAA8B,EAAEL,KAAK,QAAQ,CAAC,qCAAqC,CAAC;gBAG7F,OAAO;QACf;IACJ;AACJ;AAEA,SAASG,aAAaF,IAAgB,EAAEK,IAAY;IAChD,IAAI;QACA,OAAOL,KAAK,KAAK,CAACK;IACtB,EAAE,OAAM;QACJ;IACJ;AACJ;AAEO,MAAMC,yBAAyBC,cAAc,oBAAoB,CAAC;IACrE,gBAAgBT;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"features/formModel/ConditionRuleEvaluator.js","sources":["../../../src/features/formModel/ConditionRuleEvaluator.ts"],"sourcesContent":["import type { IFormModel } from \"./abstractions.js\";\nimport { RuleEvaluator } from \"./abstractions.js\";\n\nconst isEmpty = (value: unknown): boolean => {\n if (value === null || value === undefined || value === \"\") {\n return true;\n }\n if (Array.isArray(value) && value.length === 0) {\n return true;\n }\n return false;\n};\n\n// Loose equality coerces booleans to numbers (\"\" == false, 0 == false), so compare them strictly.\nconst isEqual = (value: unknown, ruleValue: unknown): boolean => {\n if (typeof value === \"boolean\" || typeof ruleValue === \"boolean\") {\n return value === ruleValue;\n }\n return value == ruleValue;\n};\n\nexport class ConditionRuleEvaluatorImpl implements RuleEvaluator.Interface {\n canEvaluate(rule: RuleEvaluator.Rule): boolean {\n return rule.type === \"condition\";\n }\n\n evaluate(rule: RuleEvaluator.Rule, form: IFormModel): boolean {\n const field = safeGetField(form, rule.target);\n const value = field?.getValue() ?? null;\n\n switch (rule.operator) {\n case \"==\":\n case \"eq\":\n return isEqual(value, rule.value);\n case \"!=\":\n case \"neq\":\n return !isEqual(value, rule.value);\n case \">\":\n case \"gt\":\n return Number(value) > Number(rule.value);\n case \"<\":\n case \"lt\":\n return Number(value) < Number(rule.value);\n case \">=\":\n case \"gte\":\n return Number(value) >= Number(rule.value);\n case \"<=\":\n case \"lte\":\n return Number(value) <= Number(rule.value);\n case \"isEmpty\":\n return isEmpty(value);\n case \"isNotEmpty\":\n return !isEmpty(value);\n case \"isTruthy\":\n return !!value;\n case \"isFalsy\":\n return !value;\n case \"matches\":\n if (typeof value !== \"string\" || rule.value === null) {\n return false;\n }\n return value === rule.value;\n case \"contains\":\n return String(value ?? \"\").includes(String(rule.value ?? \"\"));\n case \"notContains\":\n return !String(value ?? \"\").includes(String(rule.value ?? \"\"));\n case \"startsWith\":\n return String(value ?? \"\").startsWith(String(rule.value ?? \"\"));\n case \"notStartsWith\":\n return !String(value ?? \"\").startsWith(String(rule.value ?? \"\"));\n case \"endsWith\":\n return String(value ?? \"\").endsWith(String(rule.value ?? \"\"));\n case \"notEndsWith\":\n return !String(value ?? \"\").endsWith(String(rule.value ?? \"\"));\n default:\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[FormModel] Unknown operator \"${rule.operator}\" in condition rule. Returning false.`\n );\n }\n return false;\n }\n }\n}\n\nfunction safeGetField(form: IFormModel, name: string) {\n try {\n return form.field(name);\n } catch {\n return undefined;\n }\n}\n\nexport const ConditionRuleEvaluator = RuleEvaluator.createImplementation({\n implementation: ConditionRuleEvaluatorImpl,\n dependencies: []\n});\n"],"names":["isEmpty","value","Array","isEqual","ruleValue","ConditionRuleEvaluatorImpl","rule","form","field","safeGetField","Number","String","process","console","name","ConditionRuleEvaluator","RuleEvaluator"],"mappings":";AAGA,MAAMA,UAAU,CAACC;IACb,IAAIA,QAAAA,SAAyCA,AAAU,OAAVA,OACzC,OAAO;IAEX,IAAIC,MAAM,OAAO,CAACD,UAAUA,AAAiB,MAAjBA,MAAM,MAAM,EACpC,OAAO;IAEX,OAAO;AACX;AAGA,MAAME,UAAU,CAACF,OAAgBG;IAC7B,IAAI,AAAiB,aAAjB,OAAOH,SAAuB,AAAqB,aAArB,OAAOG,WACrC,OAAOH,UAAUG;IAErB,OAAOH,SAASG;AACpB;AAEO,MAAMC;IACT,YAAYC,IAAwB,EAAW;QAC3C,OAAOA,AAAc,gBAAdA,KAAK,IAAI;IACpB;IAEA,SAASA,IAAwB,EAAEC,IAAgB,EAAW;QAC1D,MAAMC,QAAQC,aAAaF,MAAMD,KAAK,MAAM;QAC5C,MAAML,QAAQO,OAAO,cAAc;QAEnC,OAAQF,KAAK,QAAQ;YACjB,KAAK;YACL,KAAK;gBACD,OAAOH,QAAQF,OAAOK,KAAK,KAAK;YACpC,KAAK;YACL,KAAK;gBACD,OAAO,CAACH,QAAQF,OAAOK,KAAK,KAAK;YACrC,KAAK;YACL,KAAK;gBACD,OAAOI,OAAOT,SAASS,OAAOJ,KAAK,KAAK;YAC5C,KAAK;YACL,KAAK;gBACD,OAAOI,OAAOT,SAASS,OAAOJ,KAAK,KAAK;YAC5C,KAAK;YACL,KAAK;gBACD,OAAOI,OAAOT,UAAUS,OAAOJ,KAAK,KAAK;YAC7C,KAAK;YACL,KAAK;gBACD,OAAOI,OAAOT,UAAUS,OAAOJ,KAAK,KAAK;YAC7C,KAAK;gBACD,OAAON,QAAQC;YACnB,KAAK;gBACD,OAAO,CAACD,QAAQC;YACpB,KAAK;gBACD,OAAO,CAAC,CAACA;YACb,KAAK;gBACD,OAAO,CAACA;YACZ,KAAK;gBACD,IAAI,AAAiB,YAAjB,OAAOA,SAAsBK,AAAe,SAAfA,KAAK,KAAK,EACvC,OAAO;gBAEX,OAAOL,UAAUK,KAAK,KAAK;YAC/B,KAAK;gBACD,OAAOK,OAAOV,SAAS,IAAI,QAAQ,CAACU,OAAOL,KAAK,KAAK,IAAI;YAC7D,KAAK;gBACD,OAAO,CAACK,OAAOV,SAAS,IAAI,QAAQ,CAACU,OAAOL,KAAK,KAAK,IAAI;YAC9D,KAAK;gBACD,OAAOK,OAAOV,SAAS,IAAI,UAAU,CAACU,OAAOL,KAAK,KAAK,IAAI;YAC/D,KAAK;gBACD,OAAO,CAACK,OAAOV,SAAS,IAAI,UAAU,CAACU,OAAOL,KAAK,KAAK,IAAI;YAChE,KAAK;gBACD,OAAOK,OAAOV,SAAS,IAAI,QAAQ,CAACU,OAAOL,KAAK,KAAK,IAAI;YAC7D,KAAK;gBACD,OAAO,CAACK,OAAOV,SAAS,IAAI,QAAQ,CAACU,OAAOL,KAAK,KAAK,IAAI;YAC9D;gBACI,IAAIM,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ,EACpBC,QAAQ,IAAI,CACR,CAAC,8BAA8B,EAAEP,KAAK,QAAQ,CAAC,qCAAqC,CAAC;gBAG7F,OAAO;QACf;IACJ;AACJ;AAEA,SAASG,aAAaF,IAAgB,EAAEO,IAAY;IAChD,IAAI;QACA,OAAOP,KAAK,KAAK,CAACO;IACtB,EAAE,OAAM;QACJ;IACJ;AACJ;AAEO,MAAMC,yBAAyBC,cAAc,oBAAoB,CAAC;IACrE,gBAAgBX;IAChB,cAAc,EAAE;AACpB"}
@@ -22,6 +22,7 @@ export declare class Field implements IField {
22
22
  private _focusRequested;
23
23
  private _qualifiedName;
24
24
  private _parentPath;
25
+ private _scopePath;
25
26
  private _form;
26
27
  private _ancestorRules;
27
28
  readonly config: IFieldConfig;
@@ -40,12 +41,19 @@ export declare class Field implements IField {
40
41
  */
41
42
  setValueSilent(value: unknown): void;
42
43
  setDisabled(value: boolean): void;
44
+ /**
45
+ * `form.field()` throws for a path it can't resolve, which happens while a form is
46
+ * still being assembled. Ancestor lookups treat that as "no parent" rather than
47
+ * failing the render.
48
+ */
49
+ private _safeGetField;
43
50
  private _evaluateRules;
44
51
  get visible(): boolean;
45
52
  get disabled(): boolean;
46
53
  setVisible(value: boolean): void;
47
54
  setAncestorRules(rules: IRule[]): void;
48
55
  setValidation(validation: IFieldValidation): void;
56
+ setValidationWithCache(validation: IFieldValidation, value: unknown, result: boolean): void;
49
57
  resetValidation(): void;
50
58
  addBeforeChange(cb: BeforeChangeCallback): void;
51
59
  addAfterChange(cb: AfterChangeCallback): void;
@@ -65,7 +73,12 @@ export declare class Field implements IField {
65
73
  };
66
74
  private _resolveRequired;
67
75
  blur(): void;
68
- setForm(form: IFormModel, parentPath?: string): void;
76
+ setForm(form: IFormModel, parentPath?: string, scopePath?: () => string): void;
77
+ /**
78
+ * A path `form.field()` resolves to exactly this field. Same as `qualifiedName`,
79
+ * except inside list items, where it carries the item index (`blocks.2.title`).
80
+ */
81
+ get scopedName(): string;
69
82
  private _callbackParams;
70
83
  get qualifiedName(): string;
71
84
  focus(): void;