@webiny/app-admin 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2

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 (845) hide show
  1. package/base/Admin.d.ts +2 -4
  2. package/base/Admin.js +26 -13
  3. package/base/Admin.js.map +1 -1
  4. package/base/Base/DefaultFieldRenderers.js +4 -0
  5. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  6. package/base/Base/FieldRenderers/AutoCompleteRenderer.js +1 -0
  7. package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -1
  8. package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
  9. package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
  10. package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
  11. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
  12. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
  13. package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
  14. package/base/Base/FieldRenderers/HorizontalTabsRenderer.d.ts +2 -2
  15. package/base/Base/FieldRenderers/InputRenderer.js +1 -0
  16. package/base/Base/FieldRenderers/InputRenderer.js.map +1 -1
  17. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.d.ts +2 -2
  18. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +1 -1
  19. package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -1
  20. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +10 -4
  21. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +13 -5
  22. package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
  23. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +8 -26
  24. package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
  25. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.d.ts +2 -2
  26. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +1 -1
  27. package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
  28. package/base/Base/FieldRenderers/ObjectRenderer/{TemplatePicker.d.ts → TemplatePicker/AddTemplateButton.d.ts} +1 -1
  29. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js +24 -0
  30. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js.map +1 -0
  31. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.d.ts +13 -0
  32. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js +21 -0
  33. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js.map +1 -0
  34. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.d.ts +3 -0
  35. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js +35 -0
  36. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js.map +1 -0
  37. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.d.ts +8 -0
  38. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js +22 -0
  39. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js.map +1 -0
  40. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.d.ts +10 -0
  41. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js +52 -0
  42. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js.map +1 -0
  43. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.d.ts +8 -0
  44. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js +16 -0
  45. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js.map +1 -0
  46. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.d.ts +10 -0
  47. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js +22 -0
  48. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js.map +1 -0
  49. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.d.ts +3 -0
  50. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js +35 -0
  51. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js.map +1 -0
  52. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.d.ts +1 -0
  53. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.js +1 -0
  54. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.d.ts +6 -0
  55. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.js +0 -0
  56. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +8 -3
  57. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +25 -17
  58. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
  59. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.d.ts +1 -0
  60. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js +106 -0
  61. package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js.map +1 -0
  62. package/base/Base/FieldRenderers/SelectRenderer.js +1 -0
  63. package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
  64. package/base/Base/FieldRenderers/VerticalTabsRenderer.d.ts +2 -2
  65. package/base/Base/Menus.js +4 -4
  66. package/base/Base/Menus.js.map +1 -1
  67. package/base/Base.js +2 -1
  68. package/base/Base.js.map +1 -1
  69. package/base/createRootContainer.js +10 -5
  70. package/base/createRootContainer.js.map +1 -1
  71. package/base/resolveApiUrl.d.ts +13 -0
  72. package/base/resolveApiUrl.js +26 -0
  73. package/base/resolveApiUrl.js.map +1 -0
  74. package/base/ui/AssumedPermissionsSelector.d.ts +47 -0
  75. package/base/ui/AssumedPermissionsSelector.js +7 -0
  76. package/base/ui/AssumedPermissionsSelector.js.map +1 -0
  77. package/base/ui/DebuggerIndicator.d.ts +23 -0
  78. package/base/ui/DebuggerIndicator.js +5 -0
  79. package/base/ui/DebuggerIndicator.js.map +1 -0
  80. package/components/DeveloperMode/DeveloperMode.d.ts +1 -3
  81. package/components/DeveloperMode/DeveloperMode.js.map +1 -1
  82. package/components/Filters/Filters.js +7 -1
  83. package/components/Filters/Filters.js.map +1 -1
  84. package/components/IconPicker/IconPickerComponent.d.ts +2 -2
  85. package/components/IconPicker/plugins/customPlugin.js +4 -19
  86. package/components/IconPicker/plugins/customPlugin.js.map +1 -1
  87. package/components/ListView/ListViewBulkActions.d.ts +2 -2
  88. package/components/ListView/ListViewContent.d.ts +2 -2
  89. package/components/ListView/ListViewFilters.d.ts +2 -2
  90. package/components/ListView/index.d.ts +6 -6
  91. package/components/Permissions/Permissions.js +2 -1
  92. package/components/Permissions/Permissions.js.map +1 -1
  93. package/components/Permissions/index.d.ts +1 -0
  94. package/components/Permissions/index.js +1 -0
  95. package/components/Permissions/mergeByName.d.ts +11 -0
  96. package/components/Permissions/mergeByName.js +33 -0
  97. package/components/Permissions/mergeByName.js.map +1 -0
  98. package/components/RolesMultiAutocomplete/index.d.ts +5 -1
  99. package/components/RolesMultiAutocomplete/index.js +18 -19
  100. package/components/RolesMultiAutocomplete/index.js.map +1 -1
  101. package/components/SplitView/SplitView.d.ts +2 -2
  102. package/components/SplitView/SplitView.js +8 -8
  103. package/components/SplitView/SplitView.js.map +1 -1
  104. package/components/Table/components/Table/TableInner.d.ts +2 -2
  105. package/components/TeamAutocomplete/index.d.ts +5 -1
  106. package/components/TeamAutocomplete/index.js +13 -14
  107. package/components/TeamAutocomplete/index.js.map +1 -1
  108. package/components/TeamsMultiAutocomplete/index.d.ts +5 -1
  109. package/components/TeamsMultiAutocomplete/index.js +18 -19
  110. package/components/TeamsMultiAutocomplete/index.js.map +1 -1
  111. package/components/index.d.ts +0 -1
  112. package/components/index.js +0 -1
  113. package/config/AdminConfig/Breadcrumbs.d.ts +42 -0
  114. package/config/AdminConfig/Breadcrumbs.js +24 -0
  115. package/config/AdminConfig/Breadcrumbs.js.map +1 -0
  116. package/config/AdminConfig/SecurityPermissions.js +2 -1
  117. package/config/AdminConfig/SecurityPermissions.js.map +1 -1
  118. package/config/AdminConfig/Widget.d.ts +9 -1
  119. package/config/AdminConfig/Widget.js +6 -2
  120. package/config/AdminConfig/Widget.js.map +1 -1
  121. package/config/AdminConfig.d.ts +3 -0
  122. package/config/AdminConfig.js +3 -0
  123. package/config/AdminConfig.js.map +1 -1
  124. package/errors/ErrorOverlayNetworkErrorHandler.js +4 -4
  125. package/errors/ErrorOverlayNetworkErrorHandler.js.map +1 -1
  126. package/features/accessManagement/permissions/feature.d.ts +1 -1
  127. package/features/accessManagement/types.d.ts +3 -3
  128. package/features/adminAssistant/AdminAssistantGateway.d.ts +30 -0
  129. package/features/adminAssistant/AdminAssistantGateway.js +41 -0
  130. package/features/adminAssistant/AdminAssistantGateway.js.map +1 -0
  131. package/features/adminAssistant/AdminAssistantPresenter.d.ts +32 -0
  132. package/features/adminAssistant/AdminAssistantPresenter.js +220 -0
  133. package/features/adminAssistant/AdminAssistantPresenter.js.map +1 -0
  134. package/features/adminAssistant/abstractions.d.ts +124 -0
  135. package/features/adminAssistant/abstractions.js +6 -0
  136. package/features/adminAssistant/abstractions.js.map +1 -0
  137. package/features/adminAssistant/feature.d.ts +3 -0
  138. package/features/adminAssistant/feature.js +19 -0
  139. package/features/adminAssistant/feature.js.map +1 -0
  140. package/features/adminAssistant/index.d.ts +6 -0
  141. package/features/adminAssistant/index.js +3 -0
  142. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
  143. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
  144. package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
  145. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
  146. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
  147. package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
  148. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
  149. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
  150. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
  151. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
  152. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
  153. package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
  154. package/features/adminUsers/account/getCurrentUser/abstractions/index.d.ts +6 -0
  155. package/features/adminUsers/account/getCurrentUser/abstractions/index.js +2 -0
  156. package/features/adminUsers/account/getCurrentUser/feature.d.ts +3 -0
  157. package/features/adminUsers/account/getCurrentUser/feature.js +19 -0
  158. package/features/adminUsers/account/getCurrentUser/feature.js.map +1 -0
  159. package/features/adminUsers/account/getCurrentUser/index.d.ts +1 -0
  160. package/features/adminUsers/account/getCurrentUser/index.js +1 -0
  161. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
  162. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
  163. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
  164. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
  165. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
  166. package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
  167. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
  168. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
  169. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
  170. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
  171. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
  172. package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
  173. package/features/adminUsers/account/updateCurrentUser/abstractions/index.d.ts +8 -0
  174. package/features/adminUsers/account/updateCurrentUser/abstractions/index.js +2 -0
  175. package/features/adminUsers/account/updateCurrentUser/feature.d.ts +3 -0
  176. package/features/adminUsers/account/updateCurrentUser/feature.js +19 -0
  177. package/features/adminUsers/account/updateCurrentUser/feature.js.map +1 -0
  178. package/features/adminUsers/account/updateCurrentUser/index.d.ts +1 -0
  179. package/features/adminUsers/account/updateCurrentUser/index.js +1 -0
  180. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.d.ts +6 -0
  181. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js +22 -0
  182. package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js.map +1 -0
  183. package/features/adminUsers/passwordPolicy/abstractions.d.ts +20 -0
  184. package/features/adminUsers/passwordPolicy/abstractions.js +5 -0
  185. package/features/adminUsers/passwordPolicy/abstractions.js.map +1 -0
  186. package/features/adminUsers/passwordPolicy/feature.d.ts +8 -0
  187. package/features/adminUsers/passwordPolicy/feature.js +18 -0
  188. package/features/adminUsers/passwordPolicy/feature.js.map +1 -0
  189. package/features/adminUsers/passwordPolicy/index.d.ts +3 -0
  190. package/features/adminUsers/passwordPolicy/index.js +3 -0
  191. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.d.ts +10 -0
  192. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js +11 -0
  193. package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js.map +1 -0
  194. package/features/adminUsers/permissions/abstractions.d.ts +17 -0
  195. package/features/adminUsers/permissions/abstractions.js +6 -0
  196. package/features/adminUsers/permissions/abstractions.js.map +1 -0
  197. package/features/adminUsers/permissions/feature.d.ts +14 -0
  198. package/features/adminUsers/permissions/feature.js +7 -0
  199. package/features/adminUsers/permissions/feature.js.map +1 -0
  200. package/features/adminUsers/permissionsSchema.d.ts +10 -0
  201. package/features/adminUsers/permissionsSchema.js +18 -0
  202. package/features/adminUsers/permissionsSchema.js.map +1 -0
  203. package/features/adminUsers/users/createUser/CreateUserGateway.d.ts +11 -0
  204. package/features/adminUsers/users/createUser/CreateUserGateway.js +49 -0
  205. package/features/adminUsers/users/createUser/CreateUserGateway.js.map +1 -0
  206. package/features/adminUsers/users/createUser/CreateUserUseCase.d.ts +10 -0
  207. package/features/adminUsers/users/createUser/CreateUserUseCase.js +18 -0
  208. package/features/adminUsers/users/createUser/CreateUserUseCase.js.map +1 -0
  209. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
  210. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js +5 -0
  211. package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
  212. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
  213. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js +5 -0
  214. package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
  215. package/features/adminUsers/users/createUser/abstractions/index.d.ts +2 -0
  216. package/features/adminUsers/users/createUser/abstractions/index.js +2 -0
  217. package/features/adminUsers/users/createUser/feature.d.ts +3 -0
  218. package/features/adminUsers/users/createUser/feature.js +19 -0
  219. package/features/adminUsers/users/createUser/feature.js.map +1 -0
  220. package/features/adminUsers/users/createUser/index.d.ts +2 -0
  221. package/features/adminUsers/users/createUser/index.js +2 -0
  222. package/features/adminUsers/users/deleteUser/DeleteUserGateway.d.ts +11 -0
  223. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js +40 -0
  224. package/features/adminUsers/users/deleteUser/DeleteUserGateway.js.map +1 -0
  225. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
  226. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js +18 -0
  227. package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js.map +1 -0
  228. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
  229. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
  230. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
  231. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
  232. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
  233. package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
  234. package/features/adminUsers/users/deleteUser/abstractions/index.d.ts +2 -0
  235. package/features/adminUsers/users/deleteUser/abstractions/index.js +2 -0
  236. package/features/adminUsers/users/deleteUser/feature.d.ts +3 -0
  237. package/features/adminUsers/users/deleteUser/feature.js +19 -0
  238. package/features/adminUsers/users/deleteUser/feature.js.map +1 -0
  239. package/features/adminUsers/users/deleteUser/index.d.ts +2 -0
  240. package/features/adminUsers/users/deleteUser/index.js +2 -0
  241. package/features/adminUsers/users/getUser/GetUserGateway.d.ts +11 -0
  242. package/features/adminUsers/users/getUser/GetUserGateway.js +57 -0
  243. package/features/adminUsers/users/getUser/GetUserGateway.js.map +1 -0
  244. package/features/adminUsers/users/getUser/GetUserUseCase.d.ts +10 -0
  245. package/features/adminUsers/users/getUser/GetUserUseCase.js +18 -0
  246. package/features/adminUsers/users/getUser/GetUserUseCase.js.map +1 -0
  247. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
  248. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js +5 -0
  249. package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js.map +1 -0
  250. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
  251. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js +5 -0
  252. package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
  253. package/features/adminUsers/users/getUser/abstractions/index.d.ts +2 -0
  254. package/features/adminUsers/users/getUser/abstractions/index.js +2 -0
  255. package/features/adminUsers/users/getUser/feature.d.ts +3 -0
  256. package/features/adminUsers/users/getUser/feature.js +19 -0
  257. package/features/adminUsers/users/getUser/feature.js.map +1 -0
  258. package/features/adminUsers/users/getUser/index.d.ts +2 -0
  259. package/features/adminUsers/users/getUser/index.js +2 -0
  260. package/features/adminUsers/users/listUsers/ListUsersGateway.d.ts +11 -0
  261. package/features/adminUsers/users/listUsers/ListUsersGateway.js +39 -0
  262. package/features/adminUsers/users/listUsers/ListUsersGateway.js.map +1 -0
  263. package/features/adminUsers/users/listUsers/ListUsersUseCase.d.ts +10 -0
  264. package/features/adminUsers/users/listUsers/ListUsersUseCase.js +18 -0
  265. package/features/adminUsers/users/listUsers/ListUsersUseCase.js.map +1 -0
  266. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
  267. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js +5 -0
  268. package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
  269. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
  270. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
  271. package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
  272. package/features/adminUsers/users/listUsers/abstractions/index.d.ts +2 -0
  273. package/features/adminUsers/users/listUsers/abstractions/index.js +2 -0
  274. package/features/adminUsers/users/listUsers/feature.d.ts +3 -0
  275. package/features/adminUsers/users/listUsers/feature.js +19 -0
  276. package/features/adminUsers/users/listUsers/feature.js.map +1 -0
  277. package/features/adminUsers/users/listUsers/index.d.ts +2 -0
  278. package/features/adminUsers/users/listUsers/index.js +2 -0
  279. package/features/adminUsers/users/updateUser/UpdateUserGateway.d.ts +11 -0
  280. package/features/adminUsers/users/updateUser/UpdateUserGateway.js +59 -0
  281. package/features/adminUsers/users/updateUser/UpdateUserGateway.js.map +1 -0
  282. package/features/adminUsers/users/updateUser/UpdateUserUseCase.d.ts +10 -0
  283. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js +18 -0
  284. package/features/adminUsers/users/updateUser/UpdateUserUseCase.js.map +1 -0
  285. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
  286. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
  287. package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
  288. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
  289. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
  290. package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
  291. package/features/adminUsers/users/updateUser/abstractions/index.d.ts +2 -0
  292. package/features/adminUsers/users/updateUser/abstractions/index.js +2 -0
  293. package/features/adminUsers/users/updateUser/feature.d.ts +3 -0
  294. package/features/adminUsers/users/updateUser/feature.js +19 -0
  295. package/features/adminUsers/users/updateUser/feature.js.map +1 -0
  296. package/features/adminUsers/users/updateUser/index.d.ts +2 -0
  297. package/features/adminUsers/users/updateUser/index.js +2 -0
  298. package/features/assumePermissions/ApiStreamClientDecorator.d.ts +16 -0
  299. package/features/assumePermissions/ApiStreamClientDecorator.js +29 -0
  300. package/features/assumePermissions/ApiStreamClientDecorator.js.map +1 -0
  301. package/features/assumePermissions/AssumePermissionsContext.d.ts +17 -0
  302. package/features/assumePermissions/AssumePermissionsContext.js +32 -0
  303. package/features/assumePermissions/AssumePermissionsContext.js.map +1 -0
  304. package/features/assumePermissions/AssumePermissionsUseCase.d.ts +33 -0
  305. package/features/assumePermissions/AssumePermissionsUseCase.js +48 -0
  306. package/features/assumePermissions/AssumePermissionsUseCase.js.map +1 -0
  307. package/features/assumePermissions/GraphQLClientDecorator.d.ts +16 -0
  308. package/features/assumePermissions/GraphQLClientDecorator.js +29 -0
  309. package/features/assumePermissions/GraphQLClientDecorator.js.map +1 -0
  310. package/features/assumePermissions/ListAssumableTargetsGateway.d.ts +13 -0
  311. package/features/assumePermissions/ListAssumableTargetsGateway.js +74 -0
  312. package/features/assumePermissions/ListAssumableTargetsGateway.js.map +1 -0
  313. package/features/assumePermissions/ListAssumableTargetsUseCase.d.ts +16 -0
  314. package/features/assumePermissions/ListAssumableTargetsUseCase.js +38 -0
  315. package/features/assumePermissions/ListAssumableTargetsUseCase.js.map +1 -0
  316. package/features/assumePermissions/LogInUseCaseDecorator.d.ts +33 -0
  317. package/features/assumePermissions/LogInUseCaseDecorator.js +36 -0
  318. package/features/assumePermissions/LogInUseCaseDecorator.js.map +1 -0
  319. package/features/assumePermissions/LogOutUseCaseDecorator.d.ts +16 -0
  320. package/features/assumePermissions/LogOutUseCaseDecorator.js +21 -0
  321. package/features/assumePermissions/LogOutUseCaseDecorator.js.map +1 -0
  322. package/features/assumePermissions/abstractions.d.ts +78 -0
  323. package/features/assumePermissions/abstractions.js +8 -0
  324. package/features/assumePermissions/abstractions.js.map +1 -0
  325. package/features/assumePermissions/assumePermissionsHeader.d.ts +3 -0
  326. package/features/assumePermissions/assumePermissionsHeader.js +7 -0
  327. package/features/assumePermissions/assumePermissionsHeader.js.map +1 -0
  328. package/features/assumePermissions/feature.d.ts +4 -0
  329. package/features/assumePermissions/feature.js +32 -0
  330. package/features/assumePermissions/feature.js.map +1 -0
  331. package/features/assumePermissions/index.d.ts +4 -0
  332. package/features/assumePermissions/index.js +2 -0
  333. package/features/banners/Banners.d.ts +15 -0
  334. package/features/banners/Banners.js +39 -0
  335. package/features/banners/Banners.js.map +1 -0
  336. package/features/banners/abstractions.d.ts +34 -0
  337. package/features/banners/abstractions.js +5 -0
  338. package/features/banners/abstractions.js.map +1 -0
  339. package/features/banners/feature.d.ts +3 -0
  340. package/features/banners/feature.js +17 -0
  341. package/features/banners/feature.js.map +1 -0
  342. package/features/banners/index.d.ts +2 -0
  343. package/features/banners/index.js +2 -0
  344. package/features/debugger/DebugSessionsRepository.d.ts +35 -0
  345. package/features/debugger/DebugSessionsRepository.js +57 -0
  346. package/features/debugger/DebugSessionsRepository.js.map +1 -0
  347. package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +17 -0
  348. package/features/debugger/GraphQLExtensionsDebugHandler.js +21 -0
  349. package/features/debugger/GraphQLExtensionsDebugHandler.js.map +1 -0
  350. package/features/debugger/GraphQLExtensionsDebugHandler.test.d.ts +1 -0
  351. package/features/debugger/GraphQLExtensionsDebugHandler.test.js +112 -0
  352. package/features/debugger/GraphQLExtensionsDebugHandler.test.js.map +1 -0
  353. package/features/debugger/abstractions.d.ts +50 -0
  354. package/features/debugger/abstractions.js +5 -0
  355. package/features/debugger/abstractions.js.map +1 -0
  356. package/features/debugger/constants.d.ts +1 -0
  357. package/features/debugger/constants.js +4 -0
  358. package/features/debugger/constants.js.map +1 -0
  359. package/features/debugger/feature.d.ts +3 -0
  360. package/features/debugger/feature.js +19 -0
  361. package/features/debugger/feature.js.map +1 -0
  362. package/features/debugger/index.d.ts +3 -0
  363. package/features/debugger/index.js +3 -0
  364. package/features/featureFlags/FeatureFlagsGateway.d.ts +10 -0
  365. package/features/featureFlags/FeatureFlagsGateway.js +40 -0
  366. package/features/featureFlags/FeatureFlagsGateway.js.map +1 -0
  367. package/features/featureFlags/FeatureFlagsService.d.ts +16 -0
  368. package/features/featureFlags/FeatureFlagsService.js +64 -0
  369. package/features/featureFlags/FeatureFlagsService.js.map +1 -0
  370. package/features/featureFlags/abstractions.d.ts +19 -0
  371. package/features/featureFlags/abstractions.js +6 -0
  372. package/features/featureFlags/abstractions.js.map +1 -0
  373. package/features/featureFlags/feature.d.ts +3 -0
  374. package/features/featureFlags/feature.js +19 -0
  375. package/features/featureFlags/feature.js.map +1 -0
  376. package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
  377. package/features/formModel/AccessControlRuleEvaluator.js +30 -0
  378. package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
  379. package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
  380. package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
  381. package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
  382. package/features/formModel/ConditionRuleEvaluator.js +34 -4
  383. package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
  384. package/features/formModel/Field.d.ts +13 -1
  385. package/features/formModel/Field.js +25 -5
  386. package/features/formModel/Field.js.map +1 -1
  387. package/features/formModel/FieldBuilder.d.ts +1 -0
  388. package/features/formModel/FieldBuilder.js +4 -0
  389. package/features/formModel/FieldBuilder.js.map +1 -1
  390. package/features/formModel/FieldBuilder.test.js +153 -1
  391. package/features/formModel/FieldBuilder.test.js.map +1 -1
  392. package/features/formModel/FormErrors.d.ts +2 -2
  393. package/features/formModel/FormErrors.js +1 -1
  394. package/features/formModel/FormErrors.js.map +1 -1
  395. package/features/formModel/FormModel.d.ts +2 -0
  396. package/features/formModel/FormModel.js +25 -0
  397. package/features/formModel/FormModel.js.map +1 -1
  398. package/features/formModel/FormModel.test.js +591 -4
  399. package/features/formModel/FormModel.test.js.map +1 -1
  400. package/features/formModel/FormView.d.ts +8 -4
  401. package/features/formModel/ObjectField.d.ts +11 -1
  402. package/features/formModel/ObjectField.js +45 -20
  403. package/features/formModel/ObjectField.js.map +1 -1
  404. package/features/formModel/PresenterErrors.d.ts +2 -2
  405. package/features/formModel/Rules.test.js +224 -16
  406. package/features/formModel/Rules.test.js.map +1 -1
  407. package/features/formModel/abstractions.d.ts +51 -3
  408. package/features/formModel/abstractions.js +2 -1
  409. package/features/formModel/abstractions.js.map +1 -1
  410. package/features/formModel/createFieldRenderer.js +3 -4
  411. package/features/formModel/createFieldRenderer.js.map +1 -1
  412. package/features/formModel/demo/FormModelDemo.d.ts +2 -2
  413. package/features/formModel/feature.js +2 -0
  414. package/features/formModel/feature.js.map +1 -1
  415. package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +67 -4
  416. package/features/formModel/fieldTypes/DateTimeFieldType.js +88 -22
  417. package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
  418. package/features/formModel/fieldTypes/ObjectFieldType.d.ts +3 -1
  419. package/features/formModel/fieldTypes/ObjectFieldType.js +23 -1
  420. package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
  421. package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
  422. package/features/formModel/fieldTypes/dateLimits.js +64 -0
  423. package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
  424. package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
  425. package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
  426. package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
  427. package/features/formModel/index.d.ts +2 -2
  428. package/features/formModel/index.js +1 -1
  429. package/features/formModel/jsonSchema/JsonSchema.d.ts +18 -0
  430. package/features/formModel/jsonSchema/JsonSchema.js +0 -0
  431. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.d.ts +4 -0
  432. package/features/formModel/jsonSchema/JsonSchemaFieldOptions.js +0 -0
  433. package/features/formModel/jsonSchema/JsonSchemaIssue.d.ts +4 -0
  434. package/features/formModel/jsonSchema/JsonSchemaIssue.js +0 -0
  435. package/features/formModel/jsonSchema/JsonSchemaValidationResult.d.ts +5 -0
  436. package/features/formModel/jsonSchema/JsonSchemaValidationResult.js +0 -0
  437. package/features/formModel/jsonSchema/JsonSchemaValidator.d.ts +4 -0
  438. package/features/formModel/jsonSchema/JsonSchemaValidator.js +0 -0
  439. package/features/formModel/jsonSchema/PlainObject.d.ts +1 -0
  440. package/features/formModel/jsonSchema/PlainObject.js +0 -0
  441. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.d.ts +5 -0
  442. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js +154 -0
  443. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js.map +1 -0
  444. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.d.ts +1 -0
  445. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js +643 -0
  446. package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js.map +1 -0
  447. package/features/formModel/jsonSchema/createJsonSchemaValidator.d.ts +3 -0
  448. package/features/formModel/jsonSchema/createJsonSchemaValidator.js +40 -0
  449. package/features/formModel/jsonSchema/createJsonSchemaValidator.js.map +1 -0
  450. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.d.ts +1 -0
  451. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js +141 -0
  452. package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js.map +1 -0
  453. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.d.ts +3 -0
  454. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js +52 -0
  455. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js.map +1 -0
  456. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.d.ts +1 -0
  457. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js +250 -0
  458. package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js.map +1 -0
  459. package/features/formModel/jsonSchema/getJsonSchemaKind.d.ts +3 -0
  460. package/features/formModel/jsonSchema/getJsonSchemaKind.js +31 -0
  461. package/features/formModel/jsonSchema/getJsonSchemaKind.js.map +1 -0
  462. package/features/formModel/jsonSchema/getJsonSchemaKind.test.d.ts +1 -0
  463. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js +123 -0
  464. package/features/formModel/jsonSchema/getJsonSchemaKind.test.js.map +1 -0
  465. package/features/formModel/jsonSchema/isPlainObject.d.ts +2 -0
  466. package/features/formModel/jsonSchema/isPlainObject.js +4 -0
  467. package/features/formModel/jsonSchema/isPlainObject.js.map +1 -0
  468. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.d.ts +3 -0
  469. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js +30 -0
  470. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js.map +1 -0
  471. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.d.ts +1 -0
  472. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js +207 -0
  473. package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js.map +1 -0
  474. package/features/formModel/jsonSchema/normalizeJsonSchema.d.ts +2 -0
  475. package/features/formModel/jsonSchema/normalizeJsonSchema.js +10 -0
  476. package/features/formModel/jsonSchema/normalizeJsonSchema.js.map +1 -0
  477. package/features/formModel/renderers.d.ts +1 -0
  478. package/features/formModel/renderers.js +1 -0
  479. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.d.ts +11 -0
  480. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js +49 -0
  481. package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js.map +1 -0
  482. package/features/iconPicker/listCustomIcons/abstractions.d.ts +12 -0
  483. package/features/iconPicker/listCustomIcons/abstractions.js +5 -0
  484. package/features/iconPicker/listCustomIcons/abstractions.js.map +1 -0
  485. package/features/iconPicker/listCustomIcons/feature.d.ts +1 -0
  486. package/features/iconPicker/listCustomIcons/feature.js +11 -0
  487. package/features/iconPicker/listCustomIcons/feature.js.map +1 -0
  488. package/features/iconPicker/listCustomIcons/index.d.ts +3 -0
  489. package/features/iconPicker/listCustomIcons/index.js +2 -0
  490. package/features/notifications/Notifications.d.ts +1 -0
  491. package/features/notifications/Notifications.js +3 -0
  492. package/features/notifications/Notifications.js.map +1 -1
  493. package/features/notifications/Notifications.test.d.ts +1 -0
  494. package/features/notifications/Notifications.test.js +106 -0
  495. package/features/notifications/Notifications.test.js.map +1 -0
  496. package/features/notifications/NotificationsRenderer.d.ts +3 -2
  497. package/features/notifications/NotificationsRenderer.js +23 -4
  498. package/features/notifications/NotificationsRenderer.js.map +1 -1
  499. package/features/notifications/NotificationsRenderer.test.d.ts +1 -0
  500. package/features/notifications/NotificationsRenderer.test.js +261 -0
  501. package/features/notifications/NotificationsRenderer.test.js.map +1 -0
  502. package/features/notifications/abstractions.d.ts +13 -2
  503. package/features/notifications/abstractions.js.map +1 -1
  504. package/features/security/AuthenticationContext/ApiStreamClientDecorator.d.ts +22 -0
  505. package/features/security/AuthenticationContext/ApiStreamClientDecorator.js +32 -0
  506. package/features/security/AuthenticationContext/ApiStreamClientDecorator.js.map +1 -0
  507. package/features/security/AuthenticationContext/feature.js +2 -0
  508. package/features/security/AuthenticationContext/feature.js.map +1 -1
  509. package/features/security/LogIn/LogInUseCase.d.ts +0 -1
  510. package/features/security/LogIn/LogInUseCase.js +2 -5
  511. package/features/security/LogIn/LogInUseCase.js.map +1 -1
  512. package/features/security/LogIn/hasAppPermissions.d.ts +2 -0
  513. package/features/security/LogIn/hasAppPermissions.js +8 -0
  514. package/features/security/LogIn/hasAppPermissions.js.map +1 -0
  515. package/features/slugify/DefaultSlugify.d.ts +8 -0
  516. package/features/slugify/DefaultSlugify.js +20 -0
  517. package/features/slugify/DefaultSlugify.js.map +1 -0
  518. package/features/slugify/abstractions.d.ts +12 -0
  519. package/features/slugify/abstractions.js +5 -0
  520. package/features/slugify/abstractions.js.map +1 -0
  521. package/features/slugify/feature.d.ts +1 -0
  522. package/features/slugify/feature.js +11 -0
  523. package/features/slugify/feature.js.map +1 -0
  524. package/features/slugify/index.d.ts +3 -0
  525. package/features/slugify/index.js +3 -0
  526. package/features/stringFormatter/DefaultStringFormatter.d.ts +17 -0
  527. package/features/stringFormatter/DefaultStringFormatter.js +19 -0
  528. package/features/stringFormatter/DefaultStringFormatter.js.map +1 -0
  529. package/features/stringFormatter/abstractions.d.ts +11 -0
  530. package/features/stringFormatter/abstractions.js +5 -0
  531. package/features/stringFormatter/abstractions.js.map +1 -0
  532. package/features/stringFormatter/feature.d.ts +3 -0
  533. package/features/stringFormatter/feature.js +19 -0
  534. package/features/stringFormatter/feature.js.map +1 -0
  535. package/features/stringFormatter/index.d.ts +4 -0
  536. package/features/stringFormatter/index.js +4 -0
  537. package/features/stringFormatter/useStringFormatter.d.ts +5 -0
  538. package/features/stringFormatter/useStringFormatter.js +8 -0
  539. package/features/stringFormatter/useStringFormatter.js.map +1 -0
  540. package/features/tenancy/ApiStreamClientDecorator.d.ts +16 -0
  541. package/features/tenancy/ApiStreamClientDecorator.js +30 -0
  542. package/features/tenancy/ApiStreamClientDecorator.js.map +1 -0
  543. package/features/tenancy/feature.js +2 -0
  544. package/features/tenancy/feature.js.map +1 -1
  545. package/features/wcp/ReactLicense.d.ts +8 -0
  546. package/features/wcp/ReactLicense.js +24 -0
  547. package/features/wcp/ReactLicense.js.map +1 -1
  548. package/features/wcp/WcpGateway.js +7 -0
  549. package/features/wcp/WcpGateway.js.map +1 -1
  550. package/features/webinySdk/WebinySdk.d.ts +2 -1
  551. package/features/webinySdk/WebinySdk.js.map +1 -1
  552. package/hooks/useHotkeys.js +7 -5
  553. package/hooks/useHotkeys.js.map +1 -1
  554. package/hooks/useSnackbar.js.map +1 -1
  555. package/index.d.ts +30 -3
  556. package/index.js +31 -13
  557. package/modules/AccessManagementExtension.js +55 -23
  558. package/modules/AccessManagementExtension.js.map +1 -1
  559. package/modules/DebuggerExtension.d.ts +2 -0
  560. package/modules/DebuggerExtension.js +55 -0
  561. package/modules/DebuggerExtension.js.map +1 -0
  562. package/package.json +32 -39
  563. package/permissions/createPermissions.js.map +1 -1
  564. package/presentation/accessManagement/SecurityPermissions.js +3 -3
  565. package/presentation/accessManagement/SecurityPermissions.js.map +1 -1
  566. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.d.ts +3 -1
  567. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +13 -16
  568. package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
  569. package/presentation/accessManagement/apiKeys/components/ApiKeysView.d.ts +2 -2
  570. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js +13 -7
  571. package/presentation/accessManagement/apiKeys/components/ApiKeysView.js.map +1 -1
  572. package/presentation/accessManagement/roles/RolesPresenter.d.ts +3 -1
  573. package/presentation/accessManagement/roles/RolesPresenter.js +11 -14
  574. package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
  575. package/presentation/accessManagement/roles/components/RolesDataList.d.ts +10 -0
  576. package/presentation/accessManagement/roles/components/RolesDataList.js +146 -0
  577. package/presentation/accessManagement/roles/components/RolesDataList.js.map +1 -0
  578. package/presentation/accessManagement/roles/components/RolesForm.d.ts +13 -0
  579. package/presentation/accessManagement/roles/components/RolesForm.js +114 -0
  580. package/presentation/accessManagement/roles/components/RolesForm.js.map +1 -0
  581. package/presentation/accessManagement/roles/components/RolesView.d.ts +2 -2
  582. package/presentation/accessManagement/roles/components/RolesView.js +6 -212
  583. package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
  584. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.d.ts +15 -0
  585. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js +42 -0
  586. package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js.map +1 -0
  587. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.d.ts +18 -0
  588. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js +5 -0
  589. package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js.map +1 -0
  590. package/presentation/accessManagement/roles/rolesAutocomplete/feature.d.ts +3 -0
  591. package/presentation/accessManagement/roles/rolesAutocomplete/feature.js +17 -0
  592. package/presentation/accessManagement/roles/rolesAutocomplete/feature.js.map +1 -0
  593. package/presentation/accessManagement/roles/rolesAutocomplete/index.d.ts +3 -0
  594. package/presentation/accessManagement/roles/rolesAutocomplete/index.js +2 -0
  595. package/presentation/accessManagement/teams/TeamsPresenter.d.ts +3 -1
  596. package/presentation/accessManagement/teams/TeamsPresenter.js +11 -14
  597. package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
  598. package/presentation/accessManagement/teams/components/TeamsDataList.d.ts +10 -0
  599. package/presentation/accessManagement/teams/components/TeamsDataList.js +146 -0
  600. package/presentation/accessManagement/teams/components/TeamsDataList.js.map +1 -0
  601. package/presentation/accessManagement/teams/components/TeamsForm.d.ts +13 -0
  602. package/presentation/accessManagement/teams/components/TeamsForm.js +96 -0
  603. package/presentation/accessManagement/teams/components/TeamsForm.js.map +1 -0
  604. package/presentation/accessManagement/teams/components/TeamsView.d.ts +2 -2
  605. package/presentation/accessManagement/teams/components/TeamsView.js +6 -194
  606. package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
  607. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.d.ts +15 -0
  608. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js +42 -0
  609. package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js.map +1 -0
  610. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.d.ts +18 -0
  611. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js +5 -0
  612. package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js.map +1 -0
  613. package/presentation/accessManagement/teams/teamsAutocomplete/feature.d.ts +3 -0
  614. package/presentation/accessManagement/teams/teamsAutocomplete/feature.js +17 -0
  615. package/presentation/accessManagement/teams/teamsAutocomplete/feature.js.map +1 -0
  616. package/presentation/accessManagement/teams/teamsAutocomplete/index.d.ts +3 -0
  617. package/presentation/accessManagement/teams/teamsAutocomplete/index.js +2 -0
  618. package/presentation/adminUsers/AdminUsers.d.ts +10 -0
  619. package/presentation/adminUsers/AdminUsers.js +77 -0
  620. package/presentation/adminUsers/AdminUsers.js.map +1 -0
  621. package/presentation/adminUsers/SecurityPermission.d.ts +2 -0
  622. package/presentation/adminUsers/SecurityPermission.js +15 -0
  623. package/presentation/adminUsers/SecurityPermission.js.map +1 -0
  624. package/presentation/adminUsers/UserItem.d.ts +10 -0
  625. package/presentation/adminUsers/UserItem.js +0 -0
  626. package/presentation/adminUsers/components/AvatarImage/AvatarImage.d.ts +3 -0
  627. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js +31 -0
  628. package/presentation/adminUsers/components/AvatarImage/AvatarImage.js.map +1 -0
  629. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
  630. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js +53 -0
  631. package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js.map +1 -0
  632. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
  633. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js +28 -0
  634. package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
  635. package/presentation/adminUsers/components/AvatarImage/index.d.ts +1 -0
  636. package/presentation/adminUsers/components/AvatarImage/index.js +1 -0
  637. package/presentation/adminUsers/routes.d.ts +10 -0
  638. package/presentation/adminUsers/routes.js +20 -0
  639. package/presentation/adminUsers/routes.js.map +1 -0
  640. package/presentation/adminUsers/userMenu/AccountDetails.d.ts +6 -0
  641. package/presentation/adminUsers/userMenu/AccountDetails.js +20 -0
  642. package/presentation/adminUsers/userMenu/AccountDetails.js.map +1 -0
  643. package/presentation/adminUsers/userMenu/useIsDefaultTenant.d.ts +1 -0
  644. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js +9 -0
  645. package/presentation/adminUsers/userMenu/useIsDefaultTenant.js.map +1 -0
  646. package/presentation/adminUsers/views/Account/Account.d.ts +2 -0
  647. package/presentation/adminUsers/views/Account/Account.js +137 -0
  648. package/presentation/adminUsers/views/Account/Account.js.map +1 -0
  649. package/presentation/adminUsers/views/Account/index.d.ts +1 -0
  650. package/presentation/adminUsers/views/Account/index.js +1 -0
  651. package/presentation/adminUsers/views/Users/UsersDataList.d.ts +3 -0
  652. package/presentation/adminUsers/views/Users/UsersDataList.js +180 -0
  653. package/presentation/adminUsers/views/Users/UsersDataList.js.map +1 -0
  654. package/presentation/adminUsers/views/Users/UsersForm.d.ts +5 -0
  655. package/presentation/adminUsers/views/Users/UsersForm.js +175 -0
  656. package/presentation/adminUsers/views/Users/UsersForm.js.map +1 -0
  657. package/presentation/adminUsers/views/Users/UsersView.d.ts +2 -0
  658. package/presentation/adminUsers/views/Users/UsersView.js +15 -0
  659. package/presentation/adminUsers/views/Users/UsersView.js.map +1 -0
  660. package/presentation/adminUsers/views/Users/components/DeleteAction.d.ts +7 -0
  661. package/presentation/adminUsers/views/Users/components/DeleteAction.js +29 -0
  662. package/presentation/adminUsers/views/Users/components/DeleteAction.js.map +1 -0
  663. package/presentation/adminUsers/views/Users/hooks/useUserForm.d.ts +27 -0
  664. package/presentation/adminUsers/views/Users/hooks/useUserForm.js +101 -0
  665. package/presentation/adminUsers/views/Users/hooks/useUserForm.js.map +1 -0
  666. package/presentation/adminUsers/views/Users/search.js +21 -0
  667. package/presentation/adminUsers/views/Users/search.js.map +1 -0
  668. package/presentation/adminUsers/views/Users/search.svg +20 -0
  669. package/presentation/adminUsers/views/utils.d.ts +3 -0
  670. package/presentation/adminUsers/views/utils.js +12 -0
  671. package/presentation/adminUsers/views/utils.js.map +1 -0
  672. package/presentation/assumePermissions/AssumePermissionsPresenter.d.ts +36 -0
  673. package/presentation/assumePermissions/AssumePermissionsPresenter.js +153 -0
  674. package/presentation/assumePermissions/AssumePermissionsPresenter.js.map +1 -0
  675. package/presentation/assumePermissions/abstractions.d.ts +30 -0
  676. package/presentation/assumePermissions/abstractions.js +5 -0
  677. package/presentation/assumePermissions/abstractions.js.map +1 -0
  678. package/presentation/assumePermissions/components/AssumePermissionsButton.d.ts +14 -0
  679. package/presentation/assumePermissions/components/AssumePermissionsButton.js +42 -0
  680. package/presentation/assumePermissions/components/AssumePermissionsButton.js.map +1 -0
  681. package/presentation/assumePermissions/components/AssumedPermissionsBanner.d.ts +11 -0
  682. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js +25 -0
  683. package/presentation/assumePermissions/components/AssumedPermissionsBanner.js.map +1 -0
  684. package/presentation/assumePermissions/components/AssumedPermissionsSelector.d.ts +2 -0
  685. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js +68 -0
  686. package/presentation/assumePermissions/components/AssumedPermissionsSelector.js.map +1 -0
  687. package/presentation/assumePermissions/feature.d.ts +3 -0
  688. package/presentation/assumePermissions/feature.js +17 -0
  689. package/presentation/assumePermissions/feature.js.map +1 -0
  690. package/presentation/assumePermissions/index.d.ts +4 -0
  691. package/presentation/assumePermissions/index.js +4 -0
  692. package/presentation/banners/BannersPresenter.d.ts +14 -0
  693. package/presentation/banners/BannersPresenter.js +60 -0
  694. package/presentation/banners/BannersPresenter.js.map +1 -0
  695. package/presentation/banners/abstractions.d.ts +24 -0
  696. package/presentation/banners/abstractions.js +5 -0
  697. package/presentation/banners/abstractions.js.map +1 -0
  698. package/presentation/banners/components/Banner.d.ts +10 -0
  699. package/presentation/banners/components/Banner.js +32 -0
  700. package/presentation/banners/components/Banner.js.map +1 -0
  701. package/presentation/banners/components/BannerBar.d.ts +11 -0
  702. package/presentation/banners/components/BannerBar.js +51 -0
  703. package/presentation/banners/components/BannerBar.js.map +1 -0
  704. package/presentation/banners/feature.d.ts +3 -0
  705. package/presentation/banners/feature.js +17 -0
  706. package/presentation/banners/feature.js.map +1 -0
  707. package/presentation/banners/index.d.ts +6 -0
  708. package/presentation/banners/index.js +4 -0
  709. package/presentation/banners/useBanner.d.ts +10 -0
  710. package/presentation/banners/useBanner.js +15 -0
  711. package/presentation/banners/useBanner.js.map +1 -0
  712. package/presentation/commandPalette/CommandPalettePresenter.d.ts +5 -0
  713. package/presentation/commandPalette/CommandPalettePresenter.js +25 -4
  714. package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -1
  715. package/presentation/commandPalette/abstractions.d.ts +17 -1
  716. package/presentation/commandPalette/abstractions.js.map +1 -1
  717. package/presentation/commandPalette/commands/AskAiCommand.d.ts +25 -0
  718. package/presentation/commandPalette/commands/AskAiCommand.js +33 -0
  719. package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -0
  720. package/presentation/commandPalette/commands/SendMessageCommand.js +1 -1
  721. package/presentation/commandPalette/commands/SendMessageCommand.js.map +1 -1
  722. package/presentation/commandPalette/commands/feature.js +2 -0
  723. package/presentation/commandPalette/commands/feature.js.map +1 -1
  724. package/presentation/createReactiveComponent.d.ts +1 -0
  725. package/presentation/createReactiveComponent.js +1 -0
  726. package/presentation/debugger/DebuggerPresenter.d.ts +14 -0
  727. package/presentation/debugger/DebuggerPresenter.js +45 -0
  728. package/presentation/debugger/DebuggerPresenter.js.map +1 -0
  729. package/presentation/debugger/abstractions.d.ts +17 -0
  730. package/presentation/debugger/abstractions.js +5 -0
  731. package/presentation/debugger/abstractions.js.map +1 -0
  732. package/presentation/debugger/components/DebuggerIndicator.d.ts +2 -0
  733. package/presentation/debugger/components/DebuggerIndicator.js +45 -0
  734. package/presentation/debugger/components/DebuggerIndicator.js.map +1 -0
  735. package/presentation/debugger/components/DebuggerView.d.ts +4 -0
  736. package/presentation/debugger/components/DebuggerView.js +44 -0
  737. package/presentation/debugger/components/DebuggerView.js.map +1 -0
  738. package/presentation/debugger/downloadJson.d.ts +7 -0
  739. package/presentation/debugger/downloadJson.js +17 -0
  740. package/presentation/debugger/downloadJson.js.map +1 -0
  741. package/presentation/debugger/feature.d.ts +3 -0
  742. package/presentation/debugger/feature.js +17 -0
  743. package/presentation/debugger/feature.js.map +1 -0
  744. package/presentation/debugger/routes.d.ts +4 -0
  745. package/presentation/debugger/routes.js +10 -0
  746. package/presentation/debugger/routes.js.map +1 -0
  747. package/presentation/featureFlags/FeatureFlagsProvider.d.ts +7 -0
  748. package/presentation/featureFlags/FeatureFlagsProvider.js +22 -0
  749. package/presentation/featureFlags/FeatureFlagsProvider.js.map +1 -0
  750. package/presentation/featureFlags/useFeatureFlags.d.ts +2 -0
  751. package/presentation/featureFlags/useFeatureFlags.js +17 -0
  752. package/presentation/featureFlags/useFeatureFlags.js.map +1 -0
  753. package/presentation/iconPicker/customIcons/CustomIconsPresenter.d.ts +16 -0
  754. package/presentation/iconPicker/customIcons/CustomIconsPresenter.js +40 -0
  755. package/presentation/iconPicker/customIcons/CustomIconsPresenter.js.map +1 -0
  756. package/presentation/iconPicker/customIcons/abstractions.d.ts +14 -0
  757. package/presentation/iconPicker/customIcons/abstractions.js +5 -0
  758. package/presentation/iconPicker/customIcons/abstractions.js.map +1 -0
  759. package/presentation/iconPicker/customIcons/feature.d.ts +3 -0
  760. package/presentation/iconPicker/customIcons/feature.js +17 -0
  761. package/presentation/iconPicker/customIcons/feature.js.map +1 -0
  762. package/presentation/iconPicker/customIcons/index.d.ts +3 -0
  763. package/presentation/iconPicker/customIcons/index.js +2 -0
  764. package/presentation/installation/components/SystemInstaller/SystemInstaller.d.ts +2 -2
  765. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +9 -7
  766. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
  767. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js +0 -3
  768. package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
  769. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js +1 -1
  770. package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js.map +1 -1
  771. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js +7 -5
  772. package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
  773. package/presentation/listPresenter/FolderAwareDataSource.d.ts +5 -0
  774. package/presentation/listPresenter/FolderAwareDataSource.js +4 -3
  775. package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
  776. package/presentation/listPresenter/QueryMatcher.d.ts +28 -5
  777. package/presentation/listPresenter/QueryMatcher.js +74 -4
  778. package/presentation/listPresenter/QueryMatcher.js.map +1 -1
  779. package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
  780. package/presentation/listPresenter/QueryMatcher.test.js +345 -0
  781. package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
  782. package/presentation/tenancy/TenancyProvider.js +0 -4
  783. package/presentation/tenancy/TenancyProvider.js.map +1 -1
  784. package/presentation/trashBin/TrashBinPresenter.js +3 -1
  785. package/presentation/trashBin/TrashBinPresenter.js.map +1 -1
  786. package/presentation/trashBin/TrashBinPresenter.test.d.ts +1 -0
  787. package/presentation/trashBin/TrashBinPresenter.test.js +91 -0
  788. package/presentation/trashBin/TrashBinPresenter.test.js.map +1 -0
  789. package/presentation/trashBin/abstractions.d.ts +1 -1
  790. package/presentation/trashBin/abstractions.js.map +1 -1
  791. package/presentation/trashBin/components/BulkActions/DeleteItems.d.ts +2 -2
  792. package/presentation/trashBin/components/BulkActions/DeleteItems.js +5 -1
  793. package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -1
  794. package/presentation/trashBin/components/BulkActions/DeleteItems.test.d.ts +1 -0
  795. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js +100 -0
  796. package/presentation/trashBin/components/BulkActions/DeleteItems.test.js.map +1 -0
  797. package/presentation/trashBin/components/BulkActions/RestoreItems.d.ts +2 -2
  798. package/presentation/trashBin/components/TrashBinOverlay.d.ts +2 -2
  799. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +2 -1
  800. package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -1
  801. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.d.ts +1 -0
  802. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js +67 -0
  803. package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js.map +1 -0
  804. package/static/svg/search.43fa797c.svg +20 -0
  805. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +0 -68
  806. package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +0 -1
  807. package/base/Base/Menus/WebinyVersion.d.ts +0 -2
  808. package/base/Base/Menus/WebinyVersion.js +0 -23
  809. package/base/Base/Menus/WebinyVersion.js.map +0 -1
  810. package/base/WebinyVersion.d.ts +0 -2
  811. package/base/WebinyVersion.js +0 -23
  812. package/base/WebinyVersion.js.map +0 -1
  813. package/base/plugins/AddGraphQLQuerySelection.d.ts +0 -8
  814. package/base/plugins/AddGraphQLQuerySelection.js +0 -19
  815. package/base/plugins/AddGraphQLQuerySelection.js.map +0 -1
  816. package/base/providers/ApolloProvider.d.ts +0 -13
  817. package/base/providers/ApolloProvider.js +0 -10
  818. package/base/providers/ApolloProvider.js.map +0 -1
  819. package/components/IconPicker/plugins/graphql.d.ts +0 -20
  820. package/components/IconPicker/plugins/graphql.js +0 -22
  821. package/components/IconPicker/plugins/graphql.js.map +0 -1
  822. package/components/RolesMultiAutocomplete/graphql.d.ts +0 -1
  823. package/components/RolesMultiAutocomplete/graphql.js +0 -24
  824. package/components/RolesMultiAutocomplete/graphql.js.map +0 -1
  825. package/components/TeamAutocomplete/graphql.d.ts +0 -1
  826. package/components/TeamAutocomplete/graphql.js +0 -19
  827. package/components/TeamAutocomplete/graphql.js.map +0 -1
  828. package/components/TeamsMultiAutocomplete/graphql.d.ts +0 -1
  829. package/components/TeamsMultiAutocomplete/graphql.js +0 -24
  830. package/components/TeamsMultiAutocomplete/graphql.js.map +0 -1
  831. package/components/Wcp.d.ts +0 -19
  832. package/components/Wcp.js +0 -37
  833. package/components/Wcp.js.map +0 -1
  834. package/features/apolloClient/abstraction.d.ts +0 -5
  835. package/features/apolloClient/abstraction.js +0 -5
  836. package/features/apolloClient/abstraction.js.map +0 -1
  837. package/features/apolloClient/feature.d.ts +0 -2
  838. package/features/apolloClient/feature.js +0 -31
  839. package/features/apolloClient/feature.js.map +0 -1
  840. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +0 -8
  841. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +0 -17
  842. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +0 -1
  843. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.d.ts +0 -1
  844. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +0 -16
  845. package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ import { makeAutoObservable, runInAction } from "mobx";
2
+ import { createImplementation } from "@webiny/di";
3
+ import { LocalStorage } from "@webiny/app/features/localStorage";
4
+ import { FeatureFlags } from "@webiny/feature-flags";
5
+ import { FeatureFlagsGateway, FeatureFlagsService } from "./abstractions.js";
6
+ const LOCAL_STORAGE_KEY = "featureFlags";
7
+ class FeatureFlagsServiceImpl {
8
+ constructor(gateway, localStorage){
9
+ this.gateway = gateway;
10
+ this.localStorage = localStorage;
11
+ this.flags = new FeatureFlags({});
12
+ this.loaded = false;
13
+ makeAutoObservable(this, {}, {
14
+ autoBind: true
15
+ });
16
+ this.initializeFromLocalStorage();
17
+ }
18
+ initializeFromLocalStorage() {
19
+ try {
20
+ const cached = this.localStorage.get(LOCAL_STORAGE_KEY);
21
+ if (cached) {
22
+ this.flags = FeatureFlags.fromDto(cached);
23
+ this.loaded = true;
24
+ }
25
+ } catch (error) {
26
+ console.warn("Failed to load feature flags from localStorage:", error);
27
+ }
28
+ this.loadFlags();
29
+ }
30
+ getFlags() {
31
+ return this.flags;
32
+ }
33
+ isLoaded() {
34
+ return this.loaded;
35
+ }
36
+ async loadFlags() {
37
+ try {
38
+ const data = await this.gateway.fetchFlags();
39
+ const dto = data ?? {};
40
+ const flags = FeatureFlags.fromDto(dto);
41
+ runInAction(()=>{
42
+ this.flags = flags;
43
+ this.loaded = true;
44
+ });
45
+ this.localStorage.set(LOCAL_STORAGE_KEY, dto);
46
+ } catch (error) {
47
+ console.error("Failed to load feature flags:", error);
48
+ runInAction(()=>{
49
+ this.loaded = true;
50
+ });
51
+ }
52
+ }
53
+ }
54
+ const FeatureFlagsService_FeatureFlagsService = createImplementation({
55
+ abstraction: FeatureFlagsService,
56
+ implementation: FeatureFlagsServiceImpl,
57
+ dependencies: [
58
+ FeatureFlagsGateway,
59
+ LocalStorage
60
+ ]
61
+ });
62
+ export { FeatureFlagsService_FeatureFlagsService as FeatureFlagsService };
63
+
64
+ //# sourceMappingURL=FeatureFlagsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/featureFlags/FeatureFlagsService.js","sources":["../../../src/features/featureFlags/FeatureFlagsService.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport { createImplementation } from \"@webiny/di\";\nimport { LocalStorage } from \"@webiny/app/features/localStorage\";\nimport { FeatureFlags } from \"@webiny/feature-flags\";\nimport type { IFeatureFlagsDto } from \"@webiny/feature-flags\";\nimport { FeatureFlagsService as Abstraction, FeatureFlagsGateway } from \"./abstractions.js\";\n\nconst LOCAL_STORAGE_KEY = \"featureFlags\";\n\nclass FeatureFlagsServiceImpl implements Abstraction.Interface {\n private flags: FeatureFlags = new FeatureFlags({});\n private loaded = false;\n\n constructor(\n private gateway: FeatureFlagsGateway.Interface,\n private localStorage: LocalStorage.Interface\n ) {\n makeAutoObservable(this, {}, { autoBind: true });\n this.initializeFromLocalStorage();\n }\n\n private initializeFromLocalStorage(): void {\n try {\n const cached = this.localStorage.get<IFeatureFlagsDto>(LOCAL_STORAGE_KEY);\n if (cached) {\n this.flags = FeatureFlags.fromDto(cached);\n this.loaded = true;\n }\n } catch (error) {\n console.warn(\"Failed to load feature flags from localStorage:\", error);\n }\n\n this.loadFlags();\n }\n\n getFlags(): FeatureFlags {\n return this.flags;\n }\n\n isLoaded(): boolean {\n return this.loaded;\n }\n\n async loadFlags(): Promise<void> {\n try {\n const data = await this.gateway.fetchFlags();\n const dto = data ?? {};\n const flags = FeatureFlags.fromDto(dto);\n\n runInAction(() => {\n this.flags = flags;\n this.loaded = true;\n });\n\n this.localStorage.set(LOCAL_STORAGE_KEY, dto);\n } catch (error) {\n console.error(\"Failed to load feature flags:\", error);\n runInAction(() => {\n this.loaded = true;\n });\n }\n }\n}\n\nexport const FeatureFlagsService = createImplementation({\n abstraction: Abstraction,\n implementation: FeatureFlagsServiceImpl,\n dependencies: [FeatureFlagsGateway, LocalStorage]\n});\n"],"names":["LOCAL_STORAGE_KEY","FeatureFlagsServiceImpl","gateway","localStorage","FeatureFlags","makeAutoObservable","cached","error","console","data","dto","flags","runInAction","FeatureFlagsService","createImplementation","Abstraction","FeatureFlagsGateway","LocalStorage"],"mappings":";;;;;AAOA,MAAMA,oBAAoB;AAE1B,MAAMC;IAIF,YACYC,OAAsC,EACtCC,YAAoC,CAC9C;aAFUD,OAAO,GAAPA;aACAC,YAAY,GAAZA;aALJ,KAAK,GAAiB,IAAIC,aAAa,CAAC;aACxC,MAAM,GAAG;QAMbC,mBAAmB,IAAI,EAAE,CAAC,GAAG;YAAE,UAAU;QAAK;QAC9C,IAAI,CAAC,0BAA0B;IACnC;IAEQ,6BAAmC;QACvC,IAAI;YACA,MAAMC,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAmBN;YACvD,IAAIM,QAAQ;gBACR,IAAI,CAAC,KAAK,GAAGF,aAAa,OAAO,CAACE;gBAClC,IAAI,CAAC,MAAM,GAAG;YAClB;QACJ,EAAE,OAAOC,OAAO;YACZC,QAAQ,IAAI,CAAC,mDAAmDD;QACpE;QAEA,IAAI,CAAC,SAAS;IAClB;IAEA,WAAyB;QACrB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,WAAoB;QAChB,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,MAAM,YAA2B;QAC7B,IAAI;YACA,MAAME,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU;YAC1C,MAAMC,MAAMD,QAAQ,CAAC;YACrB,MAAME,QAAQP,aAAa,OAAO,CAACM;YAEnCE,YAAY;gBACR,IAAI,CAAC,KAAK,GAAGD;gBACb,IAAI,CAAC,MAAM,GAAG;YAClB;YAEA,IAAI,CAAC,YAAY,CAAC,GAAG,CAACX,mBAAmBU;QAC7C,EAAE,OAAOH,OAAO;YACZC,QAAQ,KAAK,CAAC,iCAAiCD;YAC/CK,YAAY;gBACR,IAAI,CAAC,MAAM,GAAG;YAClB;QACJ;IACJ;AACJ;AAEO,MAAMC,0CAAsBC,qBAAqB;IACpD,aAAaC;IACb,gBAAgBd;IAChB,cAAc;QAACe;QAAqBC;KAAa;AACrD"}
@@ -0,0 +1,19 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ import type { IFeatureFlagsDto } from "@webiny/feature-flags";
3
+ import { FeatureFlags } from "@webiny/feature-flags";
4
+ export interface IFeatureFlagsGateway {
5
+ fetchFlags(): Promise<IFeatureFlagsDto | null>;
6
+ }
7
+ export declare const FeatureFlagsGateway: Abstraction<IFeatureFlagsGateway>;
8
+ export declare namespace FeatureFlagsGateway {
9
+ type Interface = IFeatureFlagsGateway;
10
+ }
11
+ export interface IFeatureFlagsService {
12
+ getFlags(): FeatureFlags;
13
+ isLoaded(): boolean;
14
+ loadFlags(): Promise<void>;
15
+ }
16
+ export declare const FeatureFlagsService: Abstraction<IFeatureFlagsService>;
17
+ export declare namespace FeatureFlagsService {
18
+ type Interface = IFeatureFlagsService;
19
+ }
@@ -0,0 +1,6 @@
1
+ import { Abstraction } from "@webiny/di";
2
+ const FeatureFlagsGateway = new Abstraction("FeatureFlagsGateway");
3
+ const FeatureFlagsService = new Abstraction("FeatureFlagsService");
4
+ export { FeatureFlagsGateway, FeatureFlagsService };
5
+
6
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/featureFlags/abstractions.js","sources":["../../../src/features/featureFlags/abstractions.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\nimport type { IFeatureFlagsDto } from \"@webiny/feature-flags\";\nimport { FeatureFlags } from \"@webiny/feature-flags\";\n\nexport interface IFeatureFlagsGateway {\n fetchFlags(): Promise<IFeatureFlagsDto | null>;\n}\n\nexport const FeatureFlagsGateway = new Abstraction<IFeatureFlagsGateway>(\"FeatureFlagsGateway\");\n\nexport namespace FeatureFlagsGateway {\n export type Interface = IFeatureFlagsGateway;\n}\n\nexport interface IFeatureFlagsService {\n getFlags(): FeatureFlags;\n isLoaded(): boolean;\n loadFlags(): Promise<void>;\n}\n\nexport const FeatureFlagsService = new Abstraction<IFeatureFlagsService>(\"FeatureFlagsService\");\n\nexport namespace FeatureFlagsService {\n export type Interface = IFeatureFlagsService;\n}\n"],"names":["FeatureFlagsGateway","Abstraction","FeatureFlagsService"],"mappings":";AAQO,MAAMA,sBAAsB,IAAIC,YAAkC;AAYlE,MAAMC,sBAAsB,IAAID,YAAkC"}
@@ -0,0 +1,3 @@
1
+ export declare const FeatureFlagsFeature: import("@webiny/feature/admin").FeatureDefinition<{
2
+ service: import("./abstractions.js").IFeatureFlagsService;
3
+ }, []>;
@@ -0,0 +1,19 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { FeatureFlagsService } from "./abstractions.js";
3
+ import { FeatureFlagsService as external_FeatureFlagsService_js_FeatureFlagsService } from "./FeatureFlagsService.js";
4
+ import { FeatureFlagsGateway } from "./FeatureFlagsGateway.js";
5
+ const FeatureFlagsFeature = createFeature({
6
+ name: "FeatureFlags",
7
+ register (container) {
8
+ container.register(FeatureFlagsGateway).inSingletonScope();
9
+ container.register(external_FeatureFlagsService_js_FeatureFlagsService).inSingletonScope();
10
+ },
11
+ resolve (container) {
12
+ return {
13
+ service: container.resolve(FeatureFlagsService)
14
+ };
15
+ }
16
+ });
17
+ export { FeatureFlagsFeature };
18
+
19
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/featureFlags/feature.js","sources":["../../../src/features/featureFlags/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { Container } from \"@webiny/di\";\nimport { FeatureFlagsService as ServiceAbstraction } from \"./abstractions.js\";\nimport { FeatureFlagsService } from \"./FeatureFlagsService.js\";\nimport { FeatureFlagsGateway } from \"./FeatureFlagsGateway.js\";\n\nexport const FeatureFlagsFeature = createFeature({\n name: \"FeatureFlags\",\n register(container: Container) {\n container.register(FeatureFlagsGateway).inSingletonScope();\n container.register(FeatureFlagsService).inSingletonScope();\n },\n resolve(container: Container) {\n return {\n service: container.resolve(ServiceAbstraction)\n };\n }\n});\n"],"names":["FeatureFlagsFeature","createFeature","container","FeatureFlagsGateway","FeatureFlagsService","ServiceAbstraction"],"mappings":";;;;AAMO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC,qBAAqB,gBAAgB;QACxDD,UAAU,QAAQ,CAACE,qDAAqB,gBAAgB;IAC5D;IACA,SAAQF,SAAoB;QACxB,OAAO;YACH,SAASA,UAAU,OAAO,CAACG;QAC/B;IACJ;AACJ"}
@@ -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,6 +41,12 @@ 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;
@@ -66,7 +73,12 @@ export declare class Field implements IField {
66
73
  };
67
74
  private _resolveRequired;
68
75
  blur(): void;
69
- 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;
70
82
  private _callbackParams;
71
83
  get qualifiedName(): string;
72
84
  focus(): void;
@@ -48,6 +48,7 @@ class Field {
48
48
  this._focusRequested = false;
49
49
  this._qualifiedName = "";
50
50
  this._parentPath = "";
51
+ this._scopePath = ()=>this._parentPath;
51
52
  this._form = null;
52
53
  this._ancestorRules = [];
53
54
  this.config = config;
@@ -81,7 +82,8 @@ class Field {
81
82
  else if (config.computedUntilDirty) this._computedUntilDirty = config.computedUntilDirty;
82
83
  makeAutoObservable(this, {
83
84
  config: false,
84
- vm: computed
85
+ vm: computed,
86
+ _scopePath: false
85
87
  });
86
88
  }
87
89
  get name() {
@@ -120,6 +122,13 @@ class Field {
120
122
  setDisabled(value) {
121
123
  this._disabled = value;
122
124
  }
125
+ _safeGetField(name) {
126
+ try {
127
+ return this._form?.field(name);
128
+ } catch {
129
+ return;
130
+ }
131
+ }
123
132
  _evaluateRules() {
124
133
  if (!this._form) return {
125
134
  visible: true,
@@ -134,11 +143,12 @@ class Field {
134
143
  visible: true,
135
144
  disabled: false
136
145
  };
137
- if (this._parentPath) {
146
+ const scopePath = this._scopePath();
147
+ if (scopePath) {
138
148
  const resolved = all.map((rule)=>{
139
149
  if (rule.target.startsWith("$.")) return {
140
150
  ...rule,
141
- target: `${this._parentPath}.${rule.target.slice(2)}`
151
+ target: `${scopePath}.${rule.target.slice(2)}`
142
152
  };
143
153
  return rule;
144
154
  });
@@ -156,6 +166,10 @@ class Field {
156
166
  }
157
167
  get disabled() {
158
168
  if (this._disabled) return true;
169
+ if (this._parentPath && this._form) {
170
+ const parent = this._safeGetField(this._parentPath);
171
+ if (parent?.disabled) return true;
172
+ }
159
173
  if (this._form && this._disabledWhenCallbacks.length > 0) {
160
174
  const scoped = this._callbackParams();
161
175
  for (const cb of this._disabledWhenCallbacks)if (cb(scoped)) return true;
@@ -235,15 +249,20 @@ class Field {
235
249
  blur() {
236
250
  for (const cb of this._onBlurCallbacks)cb(this._value, this._callbackParams());
237
251
  }
238
- setForm(form, parentPath) {
252
+ setForm(form, parentPath, scopePath) {
239
253
  this._form = form;
240
254
  this._parentPath = parentPath || "";
255
+ this._scopePath = scopePath ?? (()=>this._parentPath);
241
256
  this._qualifiedName = parentPath ? `${parentPath}.${this.config.name}` : this.config.name;
242
257
  }
258
+ get scopedName() {
259
+ const scopePath = this._scopePath();
260
+ return scopePath ? `${scopePath}.${this.config.name}` : this.config.name;
261
+ }
243
262
  _callbackParams() {
244
263
  if (!this._form) throw new Error("Field not attached to a form.");
245
264
  return {
246
- field: new FieldNavigator(this._form, this._qualifiedName),
265
+ field: new FieldNavigator(this._form, this.scopedName),
247
266
  form: this._form
248
267
  };
249
268
  }
@@ -280,6 +299,7 @@ class Field {
280
299
  description: this.config.description,
281
300
  note: this.config.note,
282
301
  placeholder: this.config.placeholder,
302
+ autoFocus: this.config.autoFocus,
283
303
  value: this.getValue(),
284
304
  validation: this.visible ? this._validation : {
285
305
  isValid: null