@webiny/app-admin 6.6.0-alpha.1 → 6.6.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/Admin.js +19 -2
- package/base/Admin.js.map +1 -1
- package/base/Base/DefaultFieldRenderers.js +4 -0
- package/base/Base/DefaultFieldRenderers.js.map +1 -1
- package/base/Base/FieldRenderers/AutoCompleteRenderer.js +1 -0
- package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +21 -4
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js +11 -2
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +2 -0
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +14 -5
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +16 -25
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +18 -3
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/{TemplatePicker.d.ts → TemplatePicker/AddTemplateButton.d.ts} +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js +24 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.d.ts +13 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js +21 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.d.ts +3 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js +35 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.d.ts +8 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js +22 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js +52 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.d.ts +8 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js +16 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js +22 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.d.ts +3 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js +35 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.d.ts +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.js +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.d.ts +6 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.js +0 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +8 -3
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +25 -17
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.d.ts +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js +106 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js.map +1 -0
- package/base/Base/FieldRenderers/RadioButtonsRenderer.js +3 -2
- package/base/Base/FieldRenderers/RadioButtonsRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/SelectRenderer.js +4 -2
- package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
- package/base/Base.js +2 -1
- package/base/Base.js.map +1 -1
- package/base/createRootContainer.js +4 -0
- package/base/createRootContainer.js.map +1 -1
- package/base/resolveApiUrl.d.ts +10 -0
- package/base/resolveApiUrl.js +11 -3
- package/base/resolveApiUrl.js.map +1 -1
- package/base/ui/AssumedPermissionsSelector.d.ts +47 -0
- package/base/ui/AssumedPermissionsSelector.js +7 -0
- package/base/ui/AssumedPermissionsSelector.js.map +1 -0
- package/base/ui/DebuggerIndicator.d.ts +23 -0
- package/base/ui/DebuggerIndicator.js +5 -0
- package/base/ui/DebuggerIndicator.js.map +1 -0
- package/base/ui/Layout.d.ts +20 -0
- package/base/ui/Layout.js +2 -1
- package/base/ui/Layout.js.map +1 -1
- package/components/DeveloperMode/DeveloperMode.d.ts +1 -3
- package/components/DeveloperMode/DeveloperMode.js.map +1 -1
- package/components/Filters/Filters.js +7 -1
- package/components/Filters/Filters.js.map +1 -1
- package/components/IconPicker/IconPickerComponent.js +1 -1
- package/components/IconPicker/IconPickerComponent.js.map +1 -1
- package/components/SplitView/SplitView.d.ts +2 -2
- package/components/SplitView/SplitView.js +7 -7
- package/components/SplitView/SplitView.js.map +1 -1
- package/config/AdminConfig/Widget.d.ts +9 -1
- package/config/AdminConfig/Widget.js +6 -2
- package/config/AdminConfig/Widget.js.map +1 -1
- package/domain/Identity.js +1 -1
- package/domain/Identity.js.map +1 -1
- package/exports/admin/ui.d.ts +4 -0
- package/exports/admin/ui.js +4 -1
- package/exports/admin.d.ts +4 -0
- package/exports/admin.js +2 -0
- package/features/{aiChat/AiChatGateway.d.ts → adminAssistant/AdminAssistantGateway.d.ts} +7 -7
- package/features/{aiChat/AiChatGateway.js → adminAssistant/AdminAssistantGateway.js} +8 -8
- package/features/adminAssistant/AdminAssistantGateway.js.map +1 -0
- package/features/adminAssistant/AdminAssistantPresenter.d.ts +60 -0
- package/features/adminAssistant/AdminAssistantPresenter.js +377 -0
- package/features/adminAssistant/AdminAssistantPresenter.js.map +1 -0
- package/features/adminAssistant/abstractions.d.ts +176 -0
- package/features/adminAssistant/abstractions.js +6 -0
- package/features/adminAssistant/abstractions.js.map +1 -0
- package/features/adminAssistant/feature.d.ts +3 -0
- package/features/adminAssistant/feature.js +19 -0
- package/features/adminAssistant/feature.js.map +1 -0
- package/features/adminAssistant/index.d.ts +6 -0
- package/features/adminAssistant/index.js +3 -0
- package/features/adminAssistant/turnsFromMessages.d.ts +15 -0
- package/features/adminAssistant/turnsFromMessages.js +77 -0
- package/features/adminAssistant/turnsFromMessages.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/index.d.ts +6 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/index.js +2 -0
- package/features/adminUsers/account/getCurrentUser/feature.d.ts +3 -0
- package/features/adminUsers/account/getCurrentUser/feature.js +19 -0
- package/features/adminUsers/account/getCurrentUser/feature.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/index.d.ts +1 -0
- package/features/adminUsers/account/getCurrentUser/index.js +1 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/index.d.ts +8 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/index.js +2 -0
- package/features/adminUsers/account/updateCurrentUser/feature.d.ts +3 -0
- package/features/adminUsers/account/updateCurrentUser/feature.js +19 -0
- package/features/adminUsers/account/updateCurrentUser/feature.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/index.d.ts +1 -0
- package/features/adminUsers/account/updateCurrentUser/index.js +1 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.d.ts +6 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js +22 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js.map +1 -0
- package/features/adminUsers/passwordPolicy/abstractions.d.ts +20 -0
- package/features/adminUsers/passwordPolicy/abstractions.js +5 -0
- package/features/adminUsers/passwordPolicy/abstractions.js.map +1 -0
- package/features/adminUsers/passwordPolicy/feature.d.ts +8 -0
- package/features/adminUsers/passwordPolicy/feature.js +18 -0
- package/features/adminUsers/passwordPolicy/feature.js.map +1 -0
- package/features/adminUsers/passwordPolicy/index.d.ts +3 -0
- package/features/adminUsers/passwordPolicy/index.js +3 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.d.ts +10 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js +11 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js.map +1 -0
- package/features/adminUsers/permissions/abstractions.d.ts +17 -0
- package/features/adminUsers/permissions/abstractions.js +6 -0
- package/features/adminUsers/permissions/abstractions.js.map +1 -0
- package/features/adminUsers/permissions/feature.d.ts +14 -0
- package/features/adminUsers/permissions/feature.js +7 -0
- package/features/adminUsers/permissions/feature.js.map +1 -0
- package/features/adminUsers/permissionsSchema.d.ts +10 -0
- package/features/adminUsers/permissionsSchema.js +18 -0
- package/features/adminUsers/permissionsSchema.js.map +1 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.d.ts +11 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.js +49 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.js.map +1 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.js +18 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js +5 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js +5 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/createUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/createUser/feature.d.ts +3 -0
- package/features/adminUsers/users/createUser/feature.js +19 -0
- package/features/adminUsers/users/createUser/feature.js.map +1 -0
- package/features/adminUsers/users/createUser/index.d.ts +2 -0
- package/features/adminUsers/users/createUser/index.js +2 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.js +40 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.js.map +1 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js +18 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/deleteUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/deleteUser/feature.d.ts +3 -0
- package/features/adminUsers/users/deleteUser/feature.js +19 -0
- package/features/adminUsers/users/deleteUser/feature.js.map +1 -0
- package/features/adminUsers/users/deleteUser/index.d.ts +2 -0
- package/features/adminUsers/users/deleteUser/index.js +2 -0
- package/features/adminUsers/users/getUser/GetUserGateway.d.ts +11 -0
- package/features/adminUsers/users/getUser/GetUserGateway.js +57 -0
- package/features/adminUsers/users/getUser/GetUserGateway.js.map +1 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.js +18 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js +5 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js +5 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/getUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/getUser/feature.d.ts +3 -0
- package/features/adminUsers/users/getUser/feature.js +19 -0
- package/features/adminUsers/users/getUser/feature.js.map +1 -0
- package/features/adminUsers/users/getUser/index.d.ts +2 -0
- package/features/adminUsers/users/getUser/index.js +2 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.d.ts +11 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.js +39 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.js.map +1 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.d.ts +10 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.js +18 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js +5 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/listUsers/abstractions/index.js +2 -0
- package/features/adminUsers/users/listUsers/feature.d.ts +3 -0
- package/features/adminUsers/users/listUsers/feature.js +19 -0
- package/features/adminUsers/users/listUsers/feature.js.map +1 -0
- package/features/adminUsers/users/listUsers/index.d.ts +2 -0
- package/features/adminUsers/users/listUsers/index.js +2 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.d.ts +11 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.js +59 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.js.map +1 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.js +18 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/updateUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/updateUser/feature.d.ts +3 -0
- package/features/adminUsers/users/updateUser/feature.js +19 -0
- package/features/adminUsers/users/updateUser/feature.js.map +1 -0
- package/features/adminUsers/users/updateUser/index.d.ts +2 -0
- package/features/adminUsers/users/updateUser/index.js +2 -0
- package/features/aiChats/AiChatSaveError.d.ts +6 -0
- package/features/aiChats/AiChatSaveError.js +8 -0
- package/features/aiChats/AiChatSaveError.js.map +1 -0
- package/features/aiChats/AiChatsGateway.d.ts +18 -0
- package/features/aiChats/AiChatsGateway.js +132 -0
- package/features/aiChats/AiChatsGateway.js.map +1 -0
- package/features/aiChats/AiChatsRepository.d.ts +36 -0
- package/features/aiChats/AiChatsRepository.js +110 -0
- package/features/aiChats/AiChatsRepository.js.map +1 -0
- package/features/aiChats/AiChatsRequestError.d.ts +9 -0
- package/features/aiChats/AiChatsRequestError.js +8 -0
- package/features/aiChats/AiChatsRequestError.js.map +1 -0
- package/features/aiChats/abstractions.d.ts +76 -0
- package/features/aiChats/abstractions.js +6 -0
- package/features/aiChats/abstractions.js.map +1 -0
- package/features/aiChats/feature.d.ts +3 -0
- package/features/aiChats/feature.js +19 -0
- package/features/aiChats/feature.js.map +1 -0
- package/features/aiChats/index.d.ts +9 -0
- package/features/aiChats/index.js +3 -0
- package/features/aiChats/messageOf.d.ts +2 -0
- package/features/aiChats/messageOf.js +7 -0
- package/features/aiChats/messageOf.js.map +1 -0
- package/features/aiSettings/abstractions.d.ts +16 -0
- package/features/aiSettings/abstractions.js +5 -0
- package/features/aiSettings/abstractions.js.map +1 -0
- package/features/aiSettings/index.d.ts +2 -0
- package/features/aiSettings/index.js +1 -0
- package/features/assumePermissions/ApiStreamClientDecorator.d.ts +16 -0
- package/features/assumePermissions/ApiStreamClientDecorator.js +29 -0
- package/features/assumePermissions/ApiStreamClientDecorator.js.map +1 -0
- package/features/assumePermissions/AssumePermissionsContext.d.ts +17 -0
- package/features/assumePermissions/AssumePermissionsContext.js +32 -0
- package/features/assumePermissions/AssumePermissionsContext.js.map +1 -0
- package/features/assumePermissions/AssumePermissionsUseCase.d.ts +33 -0
- package/features/assumePermissions/AssumePermissionsUseCase.js +48 -0
- package/features/assumePermissions/AssumePermissionsUseCase.js.map +1 -0
- package/features/assumePermissions/GraphQLClientDecorator.d.ts +16 -0
- package/features/assumePermissions/GraphQLClientDecorator.js +29 -0
- package/features/assumePermissions/GraphQLClientDecorator.js.map +1 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.d.ts +13 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.js +74 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.js.map +1 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.d.ts +16 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.js +38 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.js.map +1 -0
- package/features/assumePermissions/LogInUseCaseDecorator.d.ts +33 -0
- package/features/assumePermissions/LogInUseCaseDecorator.js +36 -0
- package/features/assumePermissions/LogInUseCaseDecorator.js.map +1 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.d.ts +16 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.js +21 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.js.map +1 -0
- package/features/assumePermissions/abstractions.d.ts +78 -0
- package/features/assumePermissions/abstractions.js +8 -0
- package/features/assumePermissions/abstractions.js.map +1 -0
- package/features/assumePermissions/assumePermissionsHeader.d.ts +3 -0
- package/features/assumePermissions/assumePermissionsHeader.js +7 -0
- package/features/assumePermissions/assumePermissionsHeader.js.map +1 -0
- package/features/assumePermissions/feature.d.ts +4 -0
- package/features/assumePermissions/feature.js +32 -0
- package/features/assumePermissions/feature.js.map +1 -0
- package/features/assumePermissions/index.d.ts +4 -0
- package/features/assumePermissions/index.js +2 -0
- package/features/banners/Banners.d.ts +15 -0
- package/features/banners/Banners.js +39 -0
- package/features/banners/Banners.js.map +1 -0
- package/features/banners/abstractions.d.ts +34 -0
- package/features/banners/abstractions.js +5 -0
- package/features/banners/abstractions.js.map +1 -0
- package/features/banners/feature.d.ts +3 -0
- package/features/banners/feature.js +17 -0
- package/features/banners/feature.js.map +1 -0
- package/features/banners/index.d.ts +2 -0
- package/features/banners/index.js +2 -0
- package/features/dateFormatter/formatUtcOffset.d.ts +1 -0
- package/features/dateFormatter/formatUtcOffset.js +11 -0
- package/features/dateFormatter/formatUtcOffset.js.map +1 -0
- package/features/debugger/DebugSessionsRepository.d.ts +35 -0
- package/features/debugger/DebugSessionsRepository.js +57 -0
- package/features/debugger/DebugSessionsRepository.js.map +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +17 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.js +21 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.js.map +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.d.ts +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.js +112 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.js.map +1 -0
- package/features/debugger/abstractions.d.ts +50 -0
- package/features/debugger/abstractions.js +5 -0
- package/features/debugger/abstractions.js.map +1 -0
- package/features/debugger/constants.d.ts +1 -0
- package/features/debugger/constants.js +4 -0
- package/features/debugger/constants.js.map +1 -0
- package/features/debugger/feature.d.ts +3 -0
- package/features/debugger/feature.js +19 -0
- package/features/debugger/feature.js.map +1 -0
- package/features/debugger/index.d.ts +3 -0
- package/features/debugger/index.js +3 -0
- package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
- package/features/formModel/AccessControlRuleEvaluator.js +30 -0
- package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
- package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
- package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
- package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
- package/features/formModel/ConditionRuleEvaluator.js +34 -4
- package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
- package/features/formModel/Field.d.ts +14 -1
- package/features/formModel/Field.js +41 -5
- package/features/formModel/Field.js.map +1 -1
- package/features/formModel/FieldBuilder.d.ts +3 -3
- package/features/formModel/FieldBuilder.js +2 -1
- package/features/formModel/FieldBuilder.js.map +1 -1
- package/features/formModel/FieldBuilder.test.js +158 -1
- package/features/formModel/FieldBuilder.test.js.map +1 -1
- package/features/formModel/FocusManager.js +10 -3
- package/features/formModel/FocusManager.js.map +1 -1
- package/features/formModel/FormErrors.js +1 -1
- package/features/formModel/FormErrors.js.map +1 -1
- package/features/formModel/FormModel.d.ts +2 -0
- package/features/formModel/FormModel.js +32 -9
- package/features/formModel/FormModel.js.map +1 -1
- package/features/formModel/FormModel.test.js +835 -4
- package/features/formModel/FormModel.test.js.map +1 -1
- package/features/formModel/ObjectField.d.ts +12 -1
- package/features/formModel/ObjectField.js +70 -20
- package/features/formModel/ObjectField.js.map +1 -1
- package/features/formModel/Rules.test.js +224 -16
- package/features/formModel/Rules.test.js.map +1 -1
- package/features/formModel/abstractions.d.ts +56 -4
- package/features/formModel/abstractions.js +2 -1
- package/features/formModel/abstractions.js.map +1 -1
- package/features/formModel/createFieldRenderer.d.ts +42 -0
- package/features/formModel/createFieldRenderer.js +33 -10
- package/features/formModel/createFieldRenderer.js.map +1 -1
- package/features/formModel/feature.js +2 -0
- package/features/formModel/feature.js.map +1 -1
- package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +67 -4
- package/features/formModel/fieldTypes/DateTimeFieldType.js +88 -22
- package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
- package/features/formModel/fieldTypes/ObjectFieldType.d.ts +3 -1
- package/features/formModel/fieldTypes/ObjectFieldType.js +23 -1
- package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
- package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
- package/features/formModel/fieldTypes/dateLimits.js +64 -0
- package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
- package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
- package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
- package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
- package/features/formModel/hasSubtreeFocusRequest.d.ts +12 -0
- package/features/formModel/hasSubtreeFocusRequest.js +15 -0
- package/features/formModel/hasSubtreeFocusRequest.js.map +1 -0
- package/features/formModel/index.d.ts +3 -2
- package/features/formModel/index.js +2 -1
- package/features/formModel/jsonSchema/JsonSchema.d.ts +18 -0
- package/features/formModel/jsonSchema/JsonSchema.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaFieldOptions.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaFieldOptions.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaIssue.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaIssue.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaValidationResult.d.ts +5 -0
- package/features/formModel/jsonSchema/JsonSchemaValidationResult.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaValidator.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaValidator.js +0 -0
- package/features/formModel/jsonSchema/PlainObject.d.ts +1 -0
- package/features/formModel/jsonSchema/PlainObject.js +0 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.d.ts +5 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js +154 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js.map +1 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.d.ts +1 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js +643 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js.map +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.d.ts +3 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.js +40 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.js.map +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.d.ts +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js +141 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js.map +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.d.ts +3 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js +52 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js.map +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.d.ts +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js +250 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js.map +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.d.ts +3 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.js +31 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.js.map +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.d.ts +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.js +123 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.js.map +1 -0
- package/features/formModel/jsonSchema/isPlainObject.d.ts +2 -0
- package/features/formModel/jsonSchema/isPlainObject.js +4 -0
- package/features/formModel/jsonSchema/isPlainObject.js.map +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.d.ts +3 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js +30 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js.map +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.d.ts +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js +207 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js.map +1 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.d.ts +2 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.js +10 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.js.map +1 -0
- package/features/formModel/renderers.d.ts +1 -0
- package/features/formModel/renderers.js +1 -0
- package/features/notifications/Notifications.d.ts +1 -0
- package/features/notifications/Notifications.js +3 -0
- package/features/notifications/Notifications.js.map +1 -1
- package/features/notifications/Notifications.test.d.ts +1 -0
- package/features/notifications/Notifications.test.js +106 -0
- package/features/notifications/Notifications.test.js.map +1 -0
- package/features/notifications/NotificationsRenderer.d.ts +2 -1
- package/features/notifications/NotificationsRenderer.js +23 -4
- package/features/notifications/NotificationsRenderer.js.map +1 -1
- package/features/notifications/NotificationsRenderer.test.d.ts +1 -0
- package/features/notifications/NotificationsRenderer.test.js +261 -0
- package/features/notifications/NotificationsRenderer.test.js.map +1 -0
- package/features/notifications/abstractions.d.ts +13 -2
- package/features/notifications/abstractions.js.map +1 -1
- package/features/security/LogIn/LogInUseCase.d.ts +0 -1
- package/features/security/LogIn/LogInUseCase.js +2 -5
- package/features/security/LogIn/LogInUseCase.js.map +1 -1
- package/features/security/LogIn/hasAppPermissions.d.ts +2 -0
- package/features/security/LogIn/hasAppPermissions.js +8 -0
- package/features/security/LogIn/hasAppPermissions.js.map +1 -0
- package/features/wcp/ReactLicense.d.ts +6 -1
- package/features/wcp/ReactLicense.js +17 -2
- package/features/wcp/ReactLicense.js.map +1 -1
- package/features/wcp/WcpGateway.js +4 -0
- package/features/wcp/WcpGateway.js.map +1 -1
- package/hooks/useHotkeys.js +6 -4
- package/hooks/useHotkeys.js.map +1 -1
- package/index.d.ts +27 -3
- package/index.js +23 -6
- package/modules/AccessManagementExtension.js +3 -1
- package/modules/AccessManagementExtension.js.map +1 -1
- package/modules/DebuggerExtension.d.ts +2 -0
- package/modules/DebuggerExtension.js +55 -0
- package/modules/DebuggerExtension.js.map +1 -0
- package/package.json +41 -41
- package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +1 -2
- package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
- package/presentation/accessManagement/roles/RolesPresenter.js +1 -2
- package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
- package/presentation/accessManagement/roles/components/RolesDataList.d.ts +10 -0
- package/presentation/accessManagement/roles/components/RolesDataList.js +146 -0
- package/presentation/accessManagement/roles/components/RolesDataList.js.map +1 -0
- package/presentation/accessManagement/roles/components/RolesForm.d.ts +13 -0
- package/presentation/accessManagement/roles/components/RolesForm.js +114 -0
- package/presentation/accessManagement/roles/components/RolesForm.js.map +1 -0
- package/presentation/accessManagement/roles/components/RolesView.js +6 -216
- package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
- package/presentation/accessManagement/teams/TeamsPresenter.js +1 -2
- package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
- package/presentation/accessManagement/teams/components/TeamsDataList.d.ts +10 -0
- package/presentation/accessManagement/teams/components/TeamsDataList.js +146 -0
- package/presentation/accessManagement/teams/components/TeamsDataList.js.map +1 -0
- package/presentation/accessManagement/teams/components/TeamsForm.d.ts +13 -0
- package/presentation/accessManagement/teams/components/TeamsForm.js +96 -0
- package/presentation/accessManagement/teams/components/TeamsForm.js.map +1 -0
- package/presentation/accessManagement/teams/components/TeamsView.js +6 -198
- package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
- package/presentation/adminUsers/AdminUsers.d.ts +10 -0
- package/presentation/adminUsers/AdminUsers.js +77 -0
- package/presentation/adminUsers/AdminUsers.js.map +1 -0
- package/presentation/adminUsers/SecurityPermission.d.ts +2 -0
- package/presentation/adminUsers/SecurityPermission.js +15 -0
- package/presentation/adminUsers/SecurityPermission.js.map +1 -0
- package/presentation/adminUsers/UserItem.d.ts +10 -0
- package/presentation/adminUsers/UserItem.js +0 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.d.ts +3 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.js +31 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js +53 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js +28 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/index.d.ts +1 -0
- package/presentation/adminUsers/components/AvatarImage/index.js +1 -0
- package/presentation/adminUsers/routes.d.ts +10 -0
- package/presentation/adminUsers/routes.js +20 -0
- package/presentation/adminUsers/routes.js.map +1 -0
- package/presentation/adminUsers/userMenu/AccountDetails.d.ts +6 -0
- package/presentation/adminUsers/userMenu/AccountDetails.js +20 -0
- package/presentation/adminUsers/userMenu/AccountDetails.js.map +1 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.d.ts +1 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.js +9 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.js.map +1 -0
- package/presentation/adminUsers/views/Account/Account.d.ts +2 -0
- package/presentation/adminUsers/views/Account/Account.js +137 -0
- package/presentation/adminUsers/views/Account/Account.js.map +1 -0
- package/presentation/adminUsers/views/Account/index.d.ts +1 -0
- package/presentation/adminUsers/views/Account/index.js +1 -0
- package/presentation/adminUsers/views/Users/UsersDataList.d.ts +3 -0
- package/presentation/adminUsers/views/Users/UsersDataList.js +180 -0
- package/presentation/adminUsers/views/Users/UsersDataList.js.map +1 -0
- package/presentation/adminUsers/views/Users/UsersForm.d.ts +5 -0
- package/presentation/adminUsers/views/Users/UsersForm.js +175 -0
- package/presentation/adminUsers/views/Users/UsersForm.js.map +1 -0
- package/presentation/adminUsers/views/Users/UsersView.d.ts +2 -0
- package/presentation/adminUsers/views/Users/UsersView.js +15 -0
- package/presentation/adminUsers/views/Users/UsersView.js.map +1 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.d.ts +7 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.js +29 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.js.map +1 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.d.ts +27 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.js +101 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.js.map +1 -0
- package/presentation/adminUsers/views/Users/search.js +21 -0
- package/presentation/adminUsers/views/Users/search.js.map +1 -0
- package/presentation/adminUsers/views/Users/search.svg +20 -0
- package/presentation/adminUsers/views/utils.d.ts +3 -0
- package/presentation/adminUsers/views/utils.js +12 -0
- package/presentation/adminUsers/views/utils.js.map +1 -0
- package/presentation/aiChats/AiChatsPanelPresenter.d.ts +28 -0
- package/presentation/aiChats/AiChatsPanelPresenter.js +132 -0
- package/presentation/aiChats/AiChatsPanelPresenter.js.map +1 -0
- package/presentation/aiChats/abstractions.d.ts +69 -0
- package/presentation/aiChats/abstractions.js +5 -0
- package/presentation/aiChats/abstractions.js.map +1 -0
- package/presentation/aiChats/feature.d.ts +3 -0
- package/presentation/aiChats/feature.js +17 -0
- package/presentation/aiChats/feature.js.map +1 -0
- package/presentation/aiChats/index.d.ts +2 -0
- package/presentation/aiChats/index.js +2 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.d.ts +36 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.js +153 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.js.map +1 -0
- package/presentation/assumePermissions/abstractions.d.ts +30 -0
- package/presentation/assumePermissions/abstractions.js +5 -0
- package/presentation/assumePermissions/abstractions.js.map +1 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.d.ts +14 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.js +42 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.js.map +1 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.d.ts +11 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.js +25 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.js.map +1 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.d.ts +2 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.js +68 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.js.map +1 -0
- package/presentation/assumePermissions/feature.d.ts +3 -0
- package/presentation/assumePermissions/feature.js +17 -0
- package/presentation/assumePermissions/feature.js.map +1 -0
- package/presentation/assumePermissions/index.d.ts +4 -0
- package/presentation/assumePermissions/index.js +4 -0
- package/presentation/banners/BannersPresenter.d.ts +14 -0
- package/presentation/banners/BannersPresenter.js +60 -0
- package/presentation/banners/BannersPresenter.js.map +1 -0
- package/presentation/banners/abstractions.d.ts +24 -0
- package/presentation/banners/abstractions.js +5 -0
- package/presentation/banners/abstractions.js.map +1 -0
- package/presentation/banners/components/Banner.d.ts +10 -0
- package/presentation/banners/components/Banner.js +32 -0
- package/presentation/banners/components/Banner.js.map +1 -0
- package/presentation/banners/components/BannerBar.d.ts +11 -0
- package/presentation/banners/components/BannerBar.js +51 -0
- package/presentation/banners/components/BannerBar.js.map +1 -0
- package/presentation/banners/feature.d.ts +3 -0
- package/presentation/banners/feature.js +17 -0
- package/presentation/banners/feature.js.map +1 -0
- package/presentation/banners/index.d.ts +6 -0
- package/presentation/banners/index.js +4 -0
- package/presentation/banners/useBanner.d.ts +10 -0
- package/presentation/banners/useBanner.js +15 -0
- package/presentation/banners/useBanner.js.map +1 -0
- package/presentation/commandPalette/CommandPalettePresenter.js +3 -1
- package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -1
- package/presentation/commandPalette/abstractions.d.ts +5 -0
- package/presentation/commandPalette/abstractions.js.map +1 -1
- package/presentation/commandPalette/commands/AiChatsCommand.d.ts +24 -0
- package/presentation/commandPalette/commands/AiChatsCommand.js +41 -0
- package/presentation/commandPalette/commands/AiChatsCommand.js.map +1 -0
- package/presentation/commandPalette/commands/AskAiCommand.d.ts +1 -0
- package/presentation/commandPalette/commands/AskAiCommand.js +3 -2
- package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -1
- package/presentation/commandPalette/commands/feature.js +2 -0
- package/presentation/commandPalette/commands/feature.js.map +1 -1
- package/presentation/createReactiveComponent.d.ts +1 -0
- package/presentation/createReactiveComponent.js +1 -0
- package/presentation/debugger/DebuggerPresenter.d.ts +14 -0
- package/presentation/debugger/DebuggerPresenter.js +45 -0
- package/presentation/debugger/DebuggerPresenter.js.map +1 -0
- package/presentation/debugger/abstractions.d.ts +17 -0
- package/presentation/debugger/abstractions.js +5 -0
- package/presentation/debugger/abstractions.js.map +1 -0
- package/presentation/debugger/components/DebuggerIndicator.d.ts +2 -0
- package/presentation/debugger/components/DebuggerIndicator.js +45 -0
- package/presentation/debugger/components/DebuggerIndicator.js.map +1 -0
- package/presentation/debugger/components/DebuggerView.d.ts +4 -0
- package/presentation/debugger/components/DebuggerView.js +44 -0
- package/presentation/debugger/components/DebuggerView.js.map +1 -0
- package/presentation/debugger/downloadJson.d.ts +7 -0
- package/presentation/debugger/downloadJson.js +17 -0
- package/presentation/debugger/downloadJson.js.map +1 -0
- package/presentation/debugger/feature.d.ts +3 -0
- package/presentation/debugger/feature.js +17 -0
- package/presentation/debugger/feature.js.map +1 -0
- package/presentation/debugger/routes.d.ts +4 -0
- package/presentation/debugger/routes.js +10 -0
- package/presentation/debugger/routes.js.map +1 -0
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +4 -3
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
- package/presentation/listPresenter/FolderAwareDataSource.d.ts +5 -0
- package/presentation/listPresenter/FolderAwareDataSource.js +4 -3
- package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
- package/presentation/listPresenter/QueryMatcher.d.ts +28 -5
- package/presentation/listPresenter/QueryMatcher.js +72 -2
- package/presentation/listPresenter/QueryMatcher.js.map +1 -1
- package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
- package/presentation/listPresenter/QueryMatcher.test.js +345 -0
- package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
- package/presentation/trashBin/TrashBinPresenter.js +3 -1
- package/presentation/trashBin/TrashBinPresenter.js.map +1 -1
- package/presentation/trashBin/TrashBinPresenter.test.d.ts +1 -0
- package/presentation/trashBin/TrashBinPresenter.test.js +91 -0
- package/presentation/trashBin/TrashBinPresenter.test.js.map +1 -0
- package/presentation/trashBin/abstractions.d.ts +1 -1
- package/presentation/trashBin/abstractions.js.map +1 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.js +5 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.d.ts +1 -0
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.js +100 -0
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.js.map +1 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +2 -1
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -1
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.d.ts +1 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js +67 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js.map +1 -0
- package/static/svg/search.43fa797c.svg +20 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +0 -68
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +0 -1
- package/features/aiChat/AiChatGateway.js.map +0 -1
- package/features/aiChat/AiChatPresenter.d.ts +0 -32
- package/features/aiChat/AiChatPresenter.js +0 -220
- package/features/aiChat/AiChatPresenter.js.map +0 -1
- package/features/aiChat/abstractions.d.ts +0 -124
- package/features/aiChat/abstractions.js +0 -6
- package/features/aiChat/abstractions.js.map +0 -1
- package/features/aiChat/feature.d.ts +0 -3
- package/features/aiChat/feature.js +0 -19
- package/features/aiChat/feature.js.map +0 -1
- package/features/aiChat/index.d.ts +0 -6
- package/features/aiChat/index.js +0 -3
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +0 -8
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +0 -17
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +0 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.d.ts +0 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +0 -16
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +0 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The role or team whose permissions to assume. `name` is carried alongside the id purely so the
|
|
3
|
+
* banner can say whose permissions are in effect without a second query.
|
|
4
|
+
*/
|
|
5
|
+
export interface IAssumePermissionsTarget {
|
|
6
|
+
type: "role" | "team";
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The assumed permissions as stored. `startedBy` is the id of the identity that started it: the
|
|
12
|
+
* selection outlives a reload by design, so it is also there for whoever signs in next on this
|
|
13
|
+
* browser, and the id is how their login tells it isn't theirs.
|
|
14
|
+
*/
|
|
15
|
+
export interface IAssumedPermissions extends IAssumePermissionsTarget {
|
|
16
|
+
startedBy: string;
|
|
17
|
+
returnTo?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface IAssumePermissionsContext {
|
|
20
|
+
get(): IAssumedPermissions | null;
|
|
21
|
+
set(value: IAssumedPermissions | null): void;
|
|
22
|
+
}
|
|
23
|
+
export declare const AssumePermissionsContext: import("@webiny/di").Abstraction<IAssumePermissionsContext>;
|
|
24
|
+
export declare namespace AssumePermissionsContext {
|
|
25
|
+
type Interface = IAssumePermissionsContext;
|
|
26
|
+
type Value = IAssumedPermissions;
|
|
27
|
+
}
|
|
28
|
+
export interface IAssumePermissionsOptions {
|
|
29
|
+
returnTo?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IAssumePermissionsUseCase {
|
|
32
|
+
execute(target: IAssumePermissionsTarget | null, options?: IAssumePermissionsOptions): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export declare const AssumePermissionsUseCase: import("@webiny/di").Abstraction<IAssumePermissionsUseCase>;
|
|
35
|
+
export declare namespace AssumePermissionsUseCase {
|
|
36
|
+
type Interface = IAssumePermissionsUseCase;
|
|
37
|
+
type Target = IAssumePermissionsTarget;
|
|
38
|
+
type Options = IAssumePermissionsOptions;
|
|
39
|
+
}
|
|
40
|
+
export interface IAssumableTargetsDto {
|
|
41
|
+
roles: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
}>;
|
|
45
|
+
teams: Array<{
|
|
46
|
+
id: string;
|
|
47
|
+
name: string;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Fetches the roles and teams on offer AS THE SIGNED-IN USER, never as the role being previewed.
|
|
52
|
+
* Every other request carries the assume-permissions header while a preview is active, and the
|
|
53
|
+
* previewed role usually cannot list roles, so without the opt-out the header control would come
|
|
54
|
+
* up empty exactly when someone is trying to switch from one role to the next.
|
|
55
|
+
*/
|
|
56
|
+
export interface IListAssumableTargetsGateway {
|
|
57
|
+
execute(params: {
|
|
58
|
+
includeTeams: boolean;
|
|
59
|
+
}): Promise<IAssumableTargetsDto>;
|
|
60
|
+
}
|
|
61
|
+
export declare const ListAssumableTargetsGateway: import("@webiny/di").Abstraction<IListAssumableTargetsGateway>;
|
|
62
|
+
export declare namespace ListAssumableTargetsGateway {
|
|
63
|
+
type Interface = IListAssumableTargetsGateway;
|
|
64
|
+
type Dto = IAssumableTargetsDto;
|
|
65
|
+
}
|
|
66
|
+
export interface IListAssumableTargetsUseCase {
|
|
67
|
+
execute(params: {
|
|
68
|
+
includeTeams: boolean;
|
|
69
|
+
}): Promise<{
|
|
70
|
+
roles: IAssumePermissionsTarget[];
|
|
71
|
+
teams: IAssumePermissionsTarget[];
|
|
72
|
+
}>;
|
|
73
|
+
}
|
|
74
|
+
export declare const ListAssumableTargetsUseCase: import("@webiny/di").Abstraction<IListAssumableTargetsUseCase>;
|
|
75
|
+
export declare namespace ListAssumableTargetsUseCase {
|
|
76
|
+
type Interface = IListAssumableTargetsUseCase;
|
|
77
|
+
type Target = IAssumePermissionsTarget;
|
|
78
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/admin";
|
|
2
|
+
const AssumePermissionsContext = createAbstraction("AssumePermissionsContext");
|
|
3
|
+
const AssumePermissionsUseCase = createAbstraction("AssumePermissionsUseCase");
|
|
4
|
+
const ListAssumableTargetsGateway = createAbstraction("ListAssumableTargetsGateway");
|
|
5
|
+
const ListAssumableTargetsUseCase = createAbstraction("ListAssumableTargetsUseCase");
|
|
6
|
+
export { AssumePermissionsContext, AssumePermissionsUseCase, ListAssumableTargetsGateway, ListAssumableTargetsUseCase };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assumePermissions/abstractions.js","sources":["../../../src/features/assumePermissions/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\n/**\n * The role or team whose permissions to assume. `name` is carried alongside the id purely so the\n * banner can say whose permissions are in effect without a second query.\n */\nexport interface IAssumePermissionsTarget {\n type: \"role\" | \"team\";\n id: string;\n name: string;\n}\n\n/**\n * The assumed permissions as stored. `startedBy` is the id of the identity that started it: the\n * selection outlives a reload by design, so it is also there for whoever signs in next on this\n * browser, and the id is how their login tells it isn't theirs.\n */\nexport interface IAssumedPermissions extends IAssumePermissionsTarget {\n startedBy: string;\n /*\n * The Admin path the preview was started from, such as the role form. Exiting goes back\n * there. Absent when the preview was started from somewhere with nothing to return to.\n */\n returnTo?: string;\n}\n\nexport interface IAssumePermissionsContext {\n get(): IAssumedPermissions | null;\n set(value: IAssumedPermissions | null): void;\n}\n\nexport const AssumePermissionsContext = createAbstraction<IAssumePermissionsContext>(\n \"AssumePermissionsContext\"\n);\n\nexport namespace AssumePermissionsContext {\n export type Interface = IAssumePermissionsContext;\n export type Value = IAssumedPermissions;\n}\n\nexport interface IAssumePermissionsOptions {\n /*\n * Where exiting should return to. Only taken when no preview is running yet: switching from one\n * role to the next keeps the place the first preview started from.\n */\n returnTo?: string;\n}\n\nexport interface IAssumePermissionsUseCase {\n execute(\n target: IAssumePermissionsTarget | null,\n options?: IAssumePermissionsOptions\n ): Promise<void>;\n}\n\nexport const AssumePermissionsUseCase = createAbstraction<IAssumePermissionsUseCase>(\n \"AssumePermissionsUseCase\"\n);\n\nexport namespace AssumePermissionsUseCase {\n export type Interface = IAssumePermissionsUseCase;\n export type Target = IAssumePermissionsTarget;\n export type Options = IAssumePermissionsOptions;\n}\n\nexport interface IAssumableTargetsDto {\n roles: Array<{ id: string; name: string }>;\n teams: Array<{ id: string; name: string }>;\n}\n\n/**\n * Fetches the roles and teams on offer AS THE SIGNED-IN USER, never as the role being previewed.\n * Every other request carries the assume-permissions header while a preview is active, and the\n * previewed role usually cannot list roles, so without the opt-out the header control would come\n * up empty exactly when someone is trying to switch from one role to the next.\n */\nexport interface IListAssumableTargetsGateway {\n execute(params: { includeTeams: boolean }): Promise<IAssumableTargetsDto>;\n}\n\nexport const ListAssumableTargetsGateway = createAbstraction<IListAssumableTargetsGateway>(\n \"ListAssumableTargetsGateway\"\n);\n\nexport namespace ListAssumableTargetsGateway {\n export type Interface = IListAssumableTargetsGateway;\n export type Dto = IAssumableTargetsDto;\n}\n\nexport interface IListAssumableTargetsUseCase {\n execute(params: { includeTeams: boolean }): Promise<{\n roles: IAssumePermissionsTarget[];\n teams: IAssumePermissionsTarget[];\n }>;\n}\n\nexport const ListAssumableTargetsUseCase = createAbstraction<IListAssumableTargetsUseCase>(\n \"ListAssumableTargetsUseCase\"\n);\n\nexport namespace ListAssumableTargetsUseCase {\n export type Interface = IListAssumableTargetsUseCase;\n export type Target = IAssumePermissionsTarget;\n}\n"],"names":["AssumePermissionsContext","createAbstraction","AssumePermissionsUseCase","ListAssumableTargetsGateway","ListAssumableTargetsUseCase"],"mappings":";AA+BO,MAAMA,2BAA2BC,kBACpC;AAuBG,MAAMC,2BAA2BD,kBACpC;AAwBG,MAAME,8BAA8BF,kBACvC;AAeG,MAAMG,8BAA8BH,kBACvC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const ASSUME_PERMISSIONS_HEADER = "x-webiny-assume-permissions";
|
|
2
|
+
function assumePermissionsHeaderValue(value) {
|
|
3
|
+
return `${value.type}:${value.id}`;
|
|
4
|
+
}
|
|
5
|
+
export { ASSUME_PERMISSIONS_HEADER, assumePermissionsHeaderValue };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=assumePermissionsHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assumePermissions/assumePermissionsHeader.js","sources":["../../../src/features/assumePermissions/assumePermissionsHeader.ts"],"sourcesContent":["import type { AssumePermissionsContext } from \"./abstractions.js\";\n\n/*\n * Kept in step by hand with ASSUME_PERMISSIONS_HEADER in @webiny/api-core, the same way\n * `x-tenant` is: the Admin cannot import a backend package.\n */\nexport const ASSUME_PERMISSIONS_HEADER = \"x-webiny-assume-permissions\";\n\nexport function assumePermissionsHeaderValue(value: AssumePermissionsContext.Value): string {\n return `${value.type}:${value.id}`;\n}\n"],"names":["ASSUME_PERMISSIONS_HEADER","assumePermissionsHeaderValue","value"],"mappings":"AAMO,MAAMA,4BAA4B;AAElC,SAASC,6BAA6BC,KAAqC;IAC9E,OAAO,GAAGA,MAAM,IAAI,CAAC,CAAC,EAAEA,MAAM,EAAE,EAAE;AACtC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { AssumePermissionsContext, AssumePermissionsUseCase } from "./abstractions.js";
|
|
3
|
+
import { AssumePermissionsContext as external_AssumePermissionsContext_js_AssumePermissionsContext } from "./AssumePermissionsContext.js";
|
|
4
|
+
import { AssumePermissionsUseCase as external_AssumePermissionsUseCase_js_AssumePermissionsUseCase } from "./AssumePermissionsUseCase.js";
|
|
5
|
+
import { GraphQLClientDecorator } from "./GraphQLClientDecorator.js";
|
|
6
|
+
import { ApiStreamClientDecorator } from "./ApiStreamClientDecorator.js";
|
|
7
|
+
import { ListAssumableTargetsGateway } from "./ListAssumableTargetsGateway.js";
|
|
8
|
+
import { ListAssumableTargetsUseCase } from "./ListAssumableTargetsUseCase.js";
|
|
9
|
+
import { LogInUseCaseDecorator } from "./LogInUseCaseDecorator.js";
|
|
10
|
+
import { LogOutUseCaseDecorator } from "./LogOutUseCaseDecorator.js";
|
|
11
|
+
const AssumePermissionsFeature = createFeature({
|
|
12
|
+
name: "AssumePermissions",
|
|
13
|
+
register (container) {
|
|
14
|
+
container.register(external_AssumePermissionsContext_js_AssumePermissionsContext).inSingletonScope();
|
|
15
|
+
container.register(external_AssumePermissionsUseCase_js_AssumePermissionsUseCase);
|
|
16
|
+
container.register(ListAssumableTargetsGateway).inSingletonScope();
|
|
17
|
+
container.register(ListAssumableTargetsUseCase);
|
|
18
|
+
container.registerDecorator(GraphQLClientDecorator);
|
|
19
|
+
container.registerDecorator(ApiStreamClientDecorator);
|
|
20
|
+
container.registerDecorator(LogInUseCaseDecorator);
|
|
21
|
+
container.registerDecorator(LogOutUseCaseDecorator);
|
|
22
|
+
},
|
|
23
|
+
resolve (container) {
|
|
24
|
+
return {
|
|
25
|
+
context: container.resolve(AssumePermissionsContext),
|
|
26
|
+
useCase: container.resolve(AssumePermissionsUseCase)
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
export { AssumePermissionsFeature };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assumePermissions/feature.js","sources":["../../../src/features/assumePermissions/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport type { Container } from \"@webiny/di\";\nimport { AssumePermissionsContext as AssumePermissionsContextAbstraction } from \"./abstractions.js\";\nimport { AssumePermissionsUseCase as AssumePermissionsUseCaseAbstraction } from \"./abstractions.js\";\nimport { AssumePermissionsContext } from \"./AssumePermissionsContext.js\";\nimport { AssumePermissionsUseCase } from \"./AssumePermissionsUseCase.js\";\nimport { GraphQLClientDecorator } from \"./GraphQLClientDecorator.js\";\nimport { ApiStreamClientDecorator } from \"./ApiStreamClientDecorator.js\";\nimport { ListAssumableTargetsGateway } from \"./ListAssumableTargetsGateway.js\";\nimport { ListAssumableTargetsUseCase } from \"./ListAssumableTargetsUseCase.js\";\nimport { LogInUseCaseDecorator } from \"./LogInUseCaseDecorator.js\";\nimport { LogOutUseCaseDecorator } from \"./LogOutUseCaseDecorator.js\";\n\nexport const AssumePermissionsFeature = createFeature({\n name: \"AssumePermissions\",\n register(container: Container) {\n container.register(AssumePermissionsContext).inSingletonScope();\n container.register(AssumePermissionsUseCase);\n container.register(ListAssumableTargetsGateway).inSingletonScope();\n container.register(ListAssumableTargetsUseCase);\n container.registerDecorator(GraphQLClientDecorator);\n container.registerDecorator(ApiStreamClientDecorator);\n container.registerDecorator(LogInUseCaseDecorator);\n container.registerDecorator(LogOutUseCaseDecorator);\n },\n resolve(container: Container) {\n return {\n context: container.resolve(AssumePermissionsContextAbstraction),\n useCase: container.resolve(AssumePermissionsUseCaseAbstraction)\n };\n }\n});\n"],"names":["AssumePermissionsFeature","createFeature","container","AssumePermissionsContext","AssumePermissionsUseCase","ListAssumableTargetsGateway","ListAssumableTargetsUseCase","GraphQLClientDecorator","ApiStreamClientDecorator","LogInUseCaseDecorator","LogOutUseCaseDecorator","AssumePermissionsContextAbstraction","AssumePermissionsUseCaseAbstraction"],"mappings":";;;;;;;;;;AAaO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC,+DAA0B,gBAAgB;QAC7DD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG,6BAA6B,gBAAgB;QAChEH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,iBAAiB,CAACK;QAC5BL,UAAU,iBAAiB,CAACM;QAC5BN,UAAU,iBAAiB,CAACO;QAC5BP,UAAU,iBAAiB,CAACQ;IAChC;IACA,SAAQR,SAAoB;QACxB,OAAO;YACH,SAASA,UAAU,OAAO,CAACS;YAC3B,SAAST,UAAU,OAAO,CAACU;QAC/B;IACJ;AACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Banners as Abstraction } from "./abstractions.js";
|
|
2
|
+
declare class BannersImpl implements Abstraction.Interface {
|
|
3
|
+
private banners;
|
|
4
|
+
private dismissed;
|
|
5
|
+
constructor();
|
|
6
|
+
show(banner: Abstraction.Banner): void;
|
|
7
|
+
hide(id: string): void;
|
|
8
|
+
dismiss(id: string): void;
|
|
9
|
+
getBanners(): Abstraction.Banner[];
|
|
10
|
+
private remove;
|
|
11
|
+
}
|
|
12
|
+
export declare const Banners: typeof BannersImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IBanners>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { makeAutoObservable } from "mobx";
|
|
2
|
+
import { Banners } from "./abstractions.js";
|
|
3
|
+
class BannersImpl {
|
|
4
|
+
constructor(){
|
|
5
|
+
this.banners = [];
|
|
6
|
+
this.dismissed = new Set();
|
|
7
|
+
makeAutoObservable(this);
|
|
8
|
+
}
|
|
9
|
+
show(banner) {
|
|
10
|
+
if (this.dismissed.has(banner.id)) return;
|
|
11
|
+
const index = this.banners.findIndex((item)=>item.id === banner.id);
|
|
12
|
+
if (index >= 0) {
|
|
13
|
+
this.banners[index] = banner;
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
this.banners.push(banner);
|
|
17
|
+
}
|
|
18
|
+
hide(id) {
|
|
19
|
+
this.dismissed.delete(id);
|
|
20
|
+
this.remove(id);
|
|
21
|
+
}
|
|
22
|
+
dismiss(id) {
|
|
23
|
+
this.dismissed.add(id);
|
|
24
|
+
this.remove(id);
|
|
25
|
+
}
|
|
26
|
+
getBanners() {
|
|
27
|
+
return this.banners;
|
|
28
|
+
}
|
|
29
|
+
remove(id) {
|
|
30
|
+
this.banners = this.banners.filter((banner)=>banner.id !== id);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const Banners_Banners = Banners.createImplementation({
|
|
34
|
+
implementation: BannersImpl,
|
|
35
|
+
dependencies: []
|
|
36
|
+
});
|
|
37
|
+
export { Banners_Banners as Banners };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=Banners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/banners/Banners.js","sources":["../../../src/features/banners/Banners.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport { Banners as Abstraction } from \"./abstractions.js\";\n\nclass BannersImpl implements Abstraction.Interface {\n private banners: Abstraction.Banner[] = [];\n private dismissed = new Set<string>();\n\n constructor() {\n makeAutoObservable(this);\n }\n\n show(banner: Abstraction.Banner): void {\n if (this.dismissed.has(banner.id)) {\n return;\n }\n\n const index = this.banners.findIndex(item => item.id === banner.id);\n\n // Replace in place, so updating a banner doesn't make it the most recent one.\n if (index >= 0) {\n this.banners[index] = banner;\n return;\n }\n\n this.banners.push(banner);\n }\n\n hide(id: string): void {\n this.dismissed.delete(id);\n this.remove(id);\n }\n\n dismiss(id: string): void {\n this.dismissed.add(id);\n this.remove(id);\n }\n\n getBanners(): Abstraction.Banner[] {\n return this.banners;\n }\n\n private remove(id: string): void {\n this.banners = this.banners.filter(banner => banner.id !== id);\n }\n}\n\nexport const Banners = Abstraction.createImplementation({\n implementation: BannersImpl,\n dependencies: []\n});\n"],"names":["BannersImpl","Set","makeAutoObservable","banner","index","item","id","Banners","Abstraction"],"mappings":";;AAGA,MAAMA;IAIF,aAAc;aAHN,OAAO,GAAyB,EAAE;aAClC,SAAS,GAAG,IAAIC;QAGpBC,mBAAmB,IAAI;IAC3B;IAEA,KAAKC,MAA0B,EAAQ;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA,OAAO,EAAE,GAC5B;QAGJ,MAAMC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAACC,CAAAA,OAAQA,KAAK,EAAE,KAAKF,OAAO,EAAE;QAGlE,IAAIC,SAAS,GAAG;YACZ,IAAI,CAAC,OAAO,CAACA,MAAM,GAAGD;YACtB;QACJ;QAEA,IAAI,CAAC,OAAO,CAAC,IAAI,CAACA;IACtB;IAEA,KAAKG,EAAU,EAAQ;QACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAACA;QACtB,IAAI,CAAC,MAAM,CAACA;IAChB;IAEA,QAAQA,EAAU,EAAQ;QACtB,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA;QACnB,IAAI,CAAC,MAAM,CAACA;IAChB;IAEA,aAAmC;QAC/B,OAAO,IAAI,CAAC,OAAO;IACvB;IAEQ,OAAOA,EAAU,EAAQ;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAACH,CAAAA,SAAUA,OAAO,EAAE,KAAKG;IAC/D;AACJ;AAEO,MAAMC,kBAAUC,QAAAA,oBAAgC,CAAC;IACpD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type BannerVariant = "info" | "success" | "warning" | "error";
|
|
2
|
+
export interface IBannerAction {
|
|
3
|
+
label: string;
|
|
4
|
+
onClick(): void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface IBanner {
|
|
8
|
+
id: string;
|
|
9
|
+
variant: BannerVariant;
|
|
10
|
+
title?: string;
|
|
11
|
+
message: string;
|
|
12
|
+
dismissible?: boolean;
|
|
13
|
+
action?: IBannerAction;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* App-wide banners across the top of the Admin, above the header bar. Any feature can inject this
|
|
17
|
+
* and show a banner without depending on React or on the Layout.
|
|
18
|
+
*
|
|
19
|
+
* Only one banner is on screen at a time: the most severe one, and the most recently shown among
|
|
20
|
+
* equally severe ones. The rest wait until it is hidden.
|
|
21
|
+
*/
|
|
22
|
+
export interface IBanners {
|
|
23
|
+
show(banner: IBanner): void;
|
|
24
|
+
hide(id: string): void;
|
|
25
|
+
dismiss(id: string): void;
|
|
26
|
+
getBanners(): IBanner[];
|
|
27
|
+
}
|
|
28
|
+
export declare const Banners: import("@webiny/di").Abstraction<IBanners>;
|
|
29
|
+
export declare namespace Banners {
|
|
30
|
+
type Interface = IBanners;
|
|
31
|
+
type Banner = IBanner;
|
|
32
|
+
type Variant = BannerVariant;
|
|
33
|
+
type Action = IBannerAction;
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/banners/abstractions.js","sources":["../../../src/features/banners/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\n\nexport type BannerVariant = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface IBannerAction {\n label: string;\n onClick(): void;\n disabled?: boolean;\n}\n\nexport interface IBanner {\n // Identifies the banner, so showing it again replaces it instead of adding a second one.\n id: string;\n variant: BannerVariant;\n // Shown in bold before the message.\n title?: string;\n message: string;\n // Adds a close button. Leave it off for banners that must stay until their cause goes away.\n dismissible?: boolean;\n action?: IBannerAction;\n}\n\n/**\n * App-wide banners across the top of the Admin, above the header bar. Any feature can inject this\n * and show a banner without depending on React or on the Layout.\n *\n * Only one banner is on screen at a time: the most severe one, and the most recently shown among\n * equally severe ones. The rest wait until it is hidden.\n */\nexport interface IBanners {\n show(banner: IBanner): void;\n // Removes the banner. Called by whoever showed it, once its cause has gone away.\n hide(id: string): void;\n /*\n * Removes the banner because the user closed it, and ignores `show()` for that id until\n * `hide()` is called. Otherwise an owner that shows the banner again on every change would\n * bring it straight back.\n */\n dismiss(id: string): void;\n getBanners(): IBanner[];\n}\n\nexport const Banners = createAbstraction<IBanners>(\"Banners\");\n\nexport namespace Banners {\n export type Interface = IBanners;\n export type Banner = IBanner;\n export type Variant = BannerVariant;\n export type Action = IBannerAction;\n}\n"],"names":["Banners","createAbstraction"],"mappings":";AA0CO,MAAMA,UAAUC,kBAA4B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { Banners } from "./abstractions.js";
|
|
3
|
+
import { Banners as external_Banners_js_Banners } from "./Banners.js";
|
|
4
|
+
const BannersFeature = createFeature({
|
|
5
|
+
name: "Banners",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.register(external_Banners_js_Banners).inSingletonScope();
|
|
8
|
+
},
|
|
9
|
+
resolve (container) {
|
|
10
|
+
return {
|
|
11
|
+
banners: container.resolve(Banners)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export { BannersFeature };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/banners/feature.js","sources":["../../../src/features/banners/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { Banners as BannersAbstraction } from \"./abstractions.js\";\nimport { Banners } from \"./Banners.js\";\n\nexport const BannersFeature = createFeature({\n name: \"Banners\",\n register(container) {\n container.register(Banners).inSingletonScope();\n },\n resolve(container) {\n return {\n banners: container.resolve(BannersAbstraction)\n };\n }\n});\n"],"names":["BannersFeature","createFeature","container","Banners","BannersAbstraction"],"mappings":";;;AAIO,MAAMA,iBAAiBC,cAAc;IACxC,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,6BAAS,gBAAgB;IAChD;IACA,SAAQD,SAAS;QACb,OAAO;YACH,SAASA,UAAU,OAAO,CAACE;QAC/B;IACJ;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatUtcOffset(): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function formatUtcOffset() {
|
|
2
|
+
const offset = -new Date().getTimezoneOffset();
|
|
3
|
+
const sign = offset >= 0 ? "+" : "-";
|
|
4
|
+
const abs = Math.abs(offset);
|
|
5
|
+
const hours = String(Math.floor(abs / 60)).padStart(2, "0");
|
|
6
|
+
const minutes = String(abs % 60).padStart(2, "0");
|
|
7
|
+
return `UTC${sign}${hours}:${minutes}`;
|
|
8
|
+
}
|
|
9
|
+
export { formatUtcOffset };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=formatUtcOffset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/dateFormatter/formatUtcOffset.js","sources":["../../../src/features/dateFormatter/formatUtcOffset.ts"],"sourcesContent":["export function formatUtcOffset(): string {\n const offset = -new Date().getTimezoneOffset();\n const sign = offset >= 0 ? \"+\" : \"-\";\n const abs = Math.abs(offset);\n const hours = String(Math.floor(abs / 60)).padStart(2, \"0\");\n const minutes = String(abs % 60).padStart(2, \"0\");\n return `UTC${sign}${hours}:${minutes}`;\n}\n"],"names":["formatUtcOffset","offset","Date","sign","abs","Math","hours","String","minutes"],"mappings":"AAAO,SAASA;IACZ,MAAMC,SAAS,CAAC,IAAIC,OAAO,iBAAiB;IAC5C,MAAMC,OAAOF,UAAU,IAAI,MAAM;IACjC,MAAMG,MAAMC,KAAK,GAAG,CAACJ;IACrB,MAAMK,QAAQC,OAAOF,KAAK,KAAK,CAACD,MAAM,KAAK,QAAQ,CAAC,GAAG;IACvD,MAAMI,UAAUD,OAAOH,MAAM,IAAI,QAAQ,CAAC,GAAG;IAC7C,OAAO,CAAC,GAAG,EAAED,OAAOG,MAAM,CAAC,EAAEE,SAAS;AAC1C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { LocalStorage } from "@webiny/app/features/localStorage";
|
|
2
|
+
import { IdentityContext } from "../../features/security/IdentityContext/index.js";
|
|
3
|
+
import { DebugSessionsRepository as Abstraction } from "./abstractions.js";
|
|
4
|
+
/**
|
|
5
|
+
* The toggle persists across reloads, because reproducing a bug often involves one. The collected
|
|
6
|
+
* sessions deliberately do not: they hold customer data, and leaving that in browser storage after
|
|
7
|
+
* the session is a worse exposure than the response itself, which is transient.
|
|
8
|
+
*/
|
|
9
|
+
declare class DebugSessionsRepositoryImpl implements Abstraction.Interface {
|
|
10
|
+
private identityContext;
|
|
11
|
+
private localStorage;
|
|
12
|
+
private sessions;
|
|
13
|
+
constructor(identityContext: IdentityContext.Interface, localStorage: LocalStorage.Interface);
|
|
14
|
+
/**
|
|
15
|
+
* An exact match, deliberately: `*` and `dev-tools.*` do not grant it. The API captures for
|
|
16
|
+
* whoever holds this, so a wildcard would leave capture permanently on for every full-access
|
|
17
|
+
* administrator, collecting record content on every request for people who never asked for it.
|
|
18
|
+
*/
|
|
19
|
+
canCapture(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Holding the permission is the opt-in: it is granted deliberately, for a support session, and
|
|
22
|
+
* nobody should then have to find a second switch before the problem they were asked to
|
|
23
|
+
* reproduce is captured. An identity that turned capture off keeps it off.
|
|
24
|
+
*/
|
|
25
|
+
isCaptureOn(): boolean;
|
|
26
|
+
setCaptureOn(enabled: boolean): void;
|
|
27
|
+
getSessions(): Abstraction.Session[];
|
|
28
|
+
getEntryCount(): number;
|
|
29
|
+
collect(payload: Abstraction.Payload): void;
|
|
30
|
+
clear(): void;
|
|
31
|
+
}
|
|
32
|
+
export declare const DebugSessionsRepository: typeof DebugSessionsRepositoryImpl & {
|
|
33
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IDebugSessionsRepository>;
|
|
34
|
+
};
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { makeAutoObservable } from "mobx";
|
|
2
|
+
import { LocalStorage } from "@webiny/app/features/localStorage";
|
|
3
|
+
import { IdentityContext } from "../security/IdentityContext/index.js";
|
|
4
|
+
import { DebugSessionsRepository } from "./abstractions.js";
|
|
5
|
+
import { DEBUG_PERMISSION } from "./constants.js";
|
|
6
|
+
const TOGGLE_STORAGE_KEY = "debugger/enabled";
|
|
7
|
+
class DebugSessionsRepositoryImpl {
|
|
8
|
+
constructor(identityContext, localStorage){
|
|
9
|
+
this.identityContext = identityContext;
|
|
10
|
+
this.localStorage = localStorage;
|
|
11
|
+
this.sessions = [];
|
|
12
|
+
makeAutoObservable(this, {
|
|
13
|
+
identityContext: false,
|
|
14
|
+
localStorage: false
|
|
15
|
+
}, {
|
|
16
|
+
autoBind: true
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
canCapture() {
|
|
20
|
+
const identity = this.identityContext.getIdentity();
|
|
21
|
+
return Boolean(identity.getPermission(DEBUG_PERMISSION, true));
|
|
22
|
+
}
|
|
23
|
+
isCaptureOn() {
|
|
24
|
+
if (!this.canCapture()) return false;
|
|
25
|
+
const choice = this.localStorage.get(TOGGLE_STORAGE_KEY);
|
|
26
|
+
return false !== choice;
|
|
27
|
+
}
|
|
28
|
+
setCaptureOn(enabled) {
|
|
29
|
+
this.localStorage.set(TOGGLE_STORAGE_KEY, enabled);
|
|
30
|
+
}
|
|
31
|
+
getSessions() {
|
|
32
|
+
return this.sessions;
|
|
33
|
+
}
|
|
34
|
+
getEntryCount() {
|
|
35
|
+
return this.sessions.reduce((total, session)=>total + (session.entries?.length || 0), 0);
|
|
36
|
+
}
|
|
37
|
+
collect(payload) {
|
|
38
|
+
if (!payload.entries?.length) return;
|
|
39
|
+
this.sessions.push({
|
|
40
|
+
...payload,
|
|
41
|
+
collectedAt: Date.now()
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
clear() {
|
|
45
|
+
this.sessions = [];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const DebugSessionsRepository_DebugSessionsRepository = DebugSessionsRepository.createImplementation({
|
|
49
|
+
implementation: DebugSessionsRepositoryImpl,
|
|
50
|
+
dependencies: [
|
|
51
|
+
IdentityContext,
|
|
52
|
+
LocalStorage
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
export { DebugSessionsRepository_DebugSessionsRepository as DebugSessionsRepository };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=DebugSessionsRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/debugger/DebugSessionsRepository.js","sources":["../../../src/features/debugger/DebugSessionsRepository.ts"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\nimport { LocalStorage } from \"@webiny/app/features/localStorage\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { DebugSessionsRepository as Abstraction } from \"./abstractions.js\";\nimport { DEBUG_PERMISSION } from \"./constants.js\";\n\nconst TOGGLE_STORAGE_KEY = \"debugger/enabled\";\n\n/**\n * The toggle persists across reloads, because reproducing a bug often involves one. The collected\n * sessions deliberately do not: they hold customer data, and leaving that in browser storage after\n * the session is a worse exposure than the response itself, which is transient.\n */\nclass DebugSessionsRepositoryImpl implements Abstraction.Interface {\n private sessions: Abstraction.Session[] = [];\n\n constructor(\n private identityContext: IdentityContext.Interface,\n private localStorage: LocalStorage.Interface\n ) {\n makeAutoObservable<DebugSessionsRepositoryImpl, \"identityContext\" | \"localStorage\">(\n this,\n { identityContext: false, localStorage: false },\n { autoBind: true }\n );\n }\n\n /**\n * An exact match, deliberately: `*` and `dev-tools.*` do not grant it. The API captures for\n * whoever holds this, so a wildcard would leave capture permanently on for every full-access\n * administrator, collecting record content on every request for people who never asked for it.\n */\n canCapture(): boolean {\n const identity = this.identityContext.getIdentity();\n return Boolean(identity.getPermission(DEBUG_PERMISSION, true));\n }\n\n /**\n * Holding the permission is the opt-in: it is granted deliberately, for a support session, and\n * nobody should then have to find a second switch before the problem they were asked to\n * reproduce is captured. An identity that turned capture off keeps it off.\n */\n isCaptureOn(): boolean {\n if (!this.canCapture()) {\n return false;\n }\n const choice = this.localStorage.get<boolean>(TOGGLE_STORAGE_KEY);\n return choice !== false;\n }\n\n setCaptureOn(enabled: boolean): void {\n this.localStorage.set(TOGGLE_STORAGE_KEY, enabled);\n }\n\n getSessions(): Abstraction.Session[] {\n return this.sessions;\n }\n\n getEntryCount(): number {\n return this.sessions.reduce((total, session) => {\n return total + (session.entries?.length || 0);\n }, 0);\n }\n\n collect(payload: Abstraction.Payload): void {\n /*\n * The API already omits sessions that captured nothing. This guards the case where a\n * response carries an envelope with no entries anyway: there is nothing to read in it, and\n * it would only pad the report.\n */\n if (!payload.entries?.length) {\n return;\n }\n\n this.sessions.push({ ...payload, collectedAt: Date.now() });\n }\n\n clear(): void {\n this.sessions = [];\n }\n}\n\nexport const DebugSessionsRepository = Abstraction.createImplementation({\n implementation: DebugSessionsRepositoryImpl,\n dependencies: [IdentityContext, LocalStorage]\n});\n"],"names":["TOGGLE_STORAGE_KEY","DebugSessionsRepositoryImpl","identityContext","localStorage","makeAutoObservable","identity","Boolean","DEBUG_PERMISSION","choice","enabled","total","session","payload","Date","DebugSessionsRepository","Abstraction","IdentityContext","LocalStorage"],"mappings":";;;;;AAMA,MAAMA,qBAAqB;AAO3B,MAAMC;IAGF,YACYC,eAA0C,EAC1CC,YAAoC,CAC9C;aAFUD,eAAe,GAAfA;aACAC,YAAY,GAAZA;aAJJ,QAAQ,GAA0B,EAAE;QAMxCC,mBACI,IAAI,EACJ;YAAE,iBAAiB;YAAO,cAAc;QAAM,GAC9C;YAAE,UAAU;QAAK;IAEzB;IAOA,aAAsB;QAClB,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,OAAOC,QAAQD,SAAS,aAAa,CAACE,kBAAkB;IAC5D;IAOA,cAAuB;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,IAChB,OAAO;QAEX,MAAMC,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAUR;QAC9C,OAAOQ,AAAW,UAAXA;IACX;IAEA,aAAaC,OAAgB,EAAQ;QACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAACT,oBAAoBS;IAC9C;IAEA,cAAqC;QACjC,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,gBAAwB;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAACC,OAAOC,UACzBD,QAASC,CAAAA,QAAQ,OAAO,EAAE,UAAU,IAC5C;IACP;IAEA,QAAQC,OAA4B,EAAQ;QAMxC,IAAI,CAACA,QAAQ,OAAO,EAAE,QAClB;QAGJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,GAAGA,OAAO;YAAE,aAAaC,KAAK,GAAG;QAAG;IAC7D;IAEA,QAAc;QACV,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;AACJ;AAEO,MAAMC,kDAA0BC,wBAAAA,oBAAgC,CAAC;IACpE,gBAAgBd;IAChB,cAAc;QAACe;QAAiBC;KAAa;AACjD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { GraphQLExtensionsEventHandler } from "@webiny/app/features/graphqlClient/index.js";
|
|
2
|
+
import { DebugSessionsRepository } from "./abstractions.js";
|
|
3
|
+
/**
|
|
4
|
+
* Collects the debug data the API attaches to GraphQL responses.
|
|
5
|
+
*
|
|
6
|
+
* Only while capture is on: turning it off in the panel means nothing more is held in memory, even
|
|
7
|
+
* though the API keeps attaching data for as long as the identity holds the permission.
|
|
8
|
+
*/
|
|
9
|
+
declare class GraphQLExtensionsDebugHandlerImpl implements GraphQLExtensionsEventHandler.Interface {
|
|
10
|
+
private repository;
|
|
11
|
+
constructor(repository: DebugSessionsRepository.Interface);
|
|
12
|
+
handle(event: GraphQLExtensionsEventHandler.Event): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare const GraphQLExtensionsDebugHandler: typeof GraphQLExtensionsDebugHandlerImpl & {
|
|
15
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/app/features/eventPublisher/abstractions.js").IEventHandler<import("@webiny/app/features/graphqlClient/GraphQLExtensionsEvent.js").GraphQLExtensionsEvent>>;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GraphQLExtensionsEventHandler } from "@webiny/app/features/graphqlClient/index.js";
|
|
2
|
+
import { DebugSessionsRepository } from "./abstractions.js";
|
|
3
|
+
class GraphQLExtensionsDebugHandlerImpl {
|
|
4
|
+
constructor(repository){
|
|
5
|
+
this.repository = repository;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
const debug = event.payload.extensions.debug;
|
|
9
|
+
if (!debug || !this.repository.isCaptureOn()) return;
|
|
10
|
+
this.repository.collect(debug);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const GraphQLExtensionsDebugHandler = GraphQLExtensionsEventHandler.createImplementation({
|
|
14
|
+
implementation: GraphQLExtensionsDebugHandlerImpl,
|
|
15
|
+
dependencies: [
|
|
16
|
+
DebugSessionsRepository
|
|
17
|
+
]
|
|
18
|
+
});
|
|
19
|
+
export { GraphQLExtensionsDebugHandler };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=GraphQLExtensionsDebugHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/debugger/GraphQLExtensionsDebugHandler.js","sources":["../../../src/features/debugger/GraphQLExtensionsDebugHandler.ts"],"sourcesContent":["import { GraphQLExtensionsEventHandler } from \"@webiny/app/features/graphqlClient/index.js\";\nimport { DebugSessionsRepository } from \"./abstractions.js\";\n\n/**\n * Collects the debug data the API attaches to GraphQL responses.\n *\n * Only while capture is on: turning it off in the panel means nothing more is held in memory, even\n * though the API keeps attaching data for as long as the identity holds the permission.\n */\nclass GraphQLExtensionsDebugHandlerImpl implements GraphQLExtensionsEventHandler.Interface {\n constructor(private repository: DebugSessionsRepository.Interface) {}\n\n async handle(event: GraphQLExtensionsEventHandler.Event): Promise<void> {\n const debug: DebugSessionsRepository.Payload | undefined = event.payload.extensions.debug;\n if (!debug || !this.repository.isCaptureOn()) {\n return;\n }\n\n this.repository.collect(debug);\n }\n}\n\nexport const GraphQLExtensionsDebugHandler = GraphQLExtensionsEventHandler.createImplementation({\n implementation: GraphQLExtensionsDebugHandlerImpl,\n dependencies: [DebugSessionsRepository]\n});\n"],"names":["GraphQLExtensionsDebugHandlerImpl","repository","event","debug","GraphQLExtensionsDebugHandler","GraphQLExtensionsEventHandler","DebugSessionsRepository"],"mappings":";;AASA,MAAMA;IACF,YAAoBC,UAA6C,CAAE;aAA/CA,UAAU,GAAVA;IAAgD;IAEpE,MAAM,OAAOC,KAA0C,EAAiB;QACpE,MAAMC,QAAqDD,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK;QACzF,IAAI,CAACC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,IACtC;QAGJ,IAAI,CAAC,UAAU,CAAC,OAAO,CAACA;IAC5B;AACJ;AAEO,MAAMC,gCAAgCC,8BAA8B,oBAAoB,CAAC;IAC5F,gBAAgBL;IAChB,cAAc;QAACM;KAAwB;AAC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it } from "vitest";
|
|
2
|
+
import { Container } from "@webiny/di";
|
|
3
|
+
import { LocalStorageFeature } from "@webiny/app/features/localStorage/feature.js";
|
|
4
|
+
import { GraphQLExtensionsEvent, GraphQLExtensionsEventHandler } from "@webiny/app/features/graphqlClient/index.js";
|
|
5
|
+
import { IdentityContext } from "../security/IdentityContext/abstractions.js";
|
|
6
|
+
import { IdentityContext as IdentityContext_js_IdentityContext } from "../security/IdentityContext/IdentityContext.js";
|
|
7
|
+
import { Identity } from "../../domain/Identity.js";
|
|
8
|
+
import { DebugSessionsRepository } from "./abstractions.js";
|
|
9
|
+
import { DebuggerFeature } from "./feature.js";
|
|
10
|
+
const createContainer = (permissions)=>{
|
|
11
|
+
const container = new Container();
|
|
12
|
+
container.register(IdentityContext_js_IdentityContext).inSingletonScope();
|
|
13
|
+
LocalStorageFeature.register(container, {
|
|
14
|
+
prefix: "test"
|
|
15
|
+
});
|
|
16
|
+
DebuggerFeature.register(container);
|
|
17
|
+
container.resolve(IdentityContext).setIdentity(Identity.createAuthenticated({
|
|
18
|
+
id: "test-user",
|
|
19
|
+
displayName: "Test User",
|
|
20
|
+
type: "admin",
|
|
21
|
+
roles: [],
|
|
22
|
+
teams: [],
|
|
23
|
+
permissions,
|
|
24
|
+
profile: {
|
|
25
|
+
external: false
|
|
26
|
+
},
|
|
27
|
+
currentTenant: {
|
|
28
|
+
id: "root",
|
|
29
|
+
name: "Root"
|
|
30
|
+
},
|
|
31
|
+
defaultTenant: {
|
|
32
|
+
id: "root",
|
|
33
|
+
name: "Root"
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
return container;
|
|
37
|
+
};
|
|
38
|
+
const createEvent = ()=>new GraphQLExtensionsEvent({
|
|
39
|
+
endpoint: "https://api.example.com/graphql",
|
|
40
|
+
operationName: "ListCategories",
|
|
41
|
+
extensions: {
|
|
42
|
+
debug: {
|
|
43
|
+
enabled: true,
|
|
44
|
+
requestId: "request-1",
|
|
45
|
+
entries: [
|
|
46
|
+
{
|
|
47
|
+
seq: 1,
|
|
48
|
+
namespace: "cms.os.list",
|
|
49
|
+
timestamp: 1,
|
|
50
|
+
elapsed: 0,
|
|
51
|
+
data: {}
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
describe("GraphQLExtensionsDebugHandler", ()=>{
|
|
58
|
+
beforeEach(()=>{
|
|
59
|
+
window.localStorage.clear();
|
|
60
|
+
});
|
|
61
|
+
it("should collect debug data for an identity with the permission", async ()=>{
|
|
62
|
+
const container = createContainer([
|
|
63
|
+
{
|
|
64
|
+
name: "dev-tools.debug"
|
|
65
|
+
}
|
|
66
|
+
]);
|
|
67
|
+
const repository = container.resolve(DebugSessionsRepository);
|
|
68
|
+
expect(repository.isCaptureOn()).toBe(true);
|
|
69
|
+
await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());
|
|
70
|
+
expect(repository.getSessions()).toHaveLength(1);
|
|
71
|
+
expect(repository.getEntryCount()).toBe(1);
|
|
72
|
+
expect(repository.getSessions()[0].requestId).toBe("request-1");
|
|
73
|
+
});
|
|
74
|
+
it("should collect nothing once capture is turned off", async ()=>{
|
|
75
|
+
const container = createContainer([
|
|
76
|
+
{
|
|
77
|
+
name: "dev-tools.debug"
|
|
78
|
+
}
|
|
79
|
+
]);
|
|
80
|
+
const repository = container.resolve(DebugSessionsRepository);
|
|
81
|
+
repository.setCaptureOn(false);
|
|
82
|
+
await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());
|
|
83
|
+
expect(repository.isCaptureOn()).toBe(false);
|
|
84
|
+
expect(repository.getSessions()).toHaveLength(0);
|
|
85
|
+
});
|
|
86
|
+
it("should not treat Dev Tools full access as the permission", async ()=>{
|
|
87
|
+
const container = createContainer([
|
|
88
|
+
{
|
|
89
|
+
name: "dev-tools.*"
|
|
90
|
+
}
|
|
91
|
+
]);
|
|
92
|
+
const repository = container.resolve(DebugSessionsRepository);
|
|
93
|
+
await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());
|
|
94
|
+
expect(repository.canCapture()).toBe(false);
|
|
95
|
+
expect(repository.isCaptureOn()).toBe(false);
|
|
96
|
+
expect(repository.getSessions()).toHaveLength(0);
|
|
97
|
+
});
|
|
98
|
+
it("should drop everything on clear", async ()=>{
|
|
99
|
+
const container = createContainer([
|
|
100
|
+
{
|
|
101
|
+
name: "dev-tools.debug"
|
|
102
|
+
}
|
|
103
|
+
]);
|
|
104
|
+
const repository = container.resolve(DebugSessionsRepository);
|
|
105
|
+
await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());
|
|
106
|
+
repository.clear();
|
|
107
|
+
expect(repository.getSessions()).toHaveLength(0);
|
|
108
|
+
expect(repository.getEntryCount()).toBe(0);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=GraphQLExtensionsDebugHandler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/debugger/GraphQLExtensionsDebugHandler.test.js","sources":["../../../src/features/debugger/GraphQLExtensionsDebugHandler.test.ts"],"sourcesContent":["import { beforeEach, describe, expect, it } from \"vitest\";\nimport { Container } from \"@webiny/di\";\nimport { LocalStorageFeature } from \"@webiny/app/features/localStorage/feature.js\";\nimport { GraphQLExtensionsEvent } from \"@webiny/app/features/graphqlClient/index.js\";\nimport { GraphQLExtensionsEventHandler } from \"@webiny/app/features/graphqlClient/index.js\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/abstractions.js\";\nimport { IdentityContext as IdentityContextImpl } from \"~/features/security/IdentityContext/IdentityContext.js\";\nimport { Identity } from \"~/domain/Identity.js\";\nimport { DebugSessionsRepository } from \"./abstractions.js\";\nimport { DebuggerFeature } from \"./feature.js\";\n\nconst createContainer = (permissions: Array<{ name: string }>) => {\n const container = new Container();\n container.register(IdentityContextImpl).inSingletonScope();\n LocalStorageFeature.register(container, { prefix: \"test\" });\n DebuggerFeature.register(container);\n\n container.resolve(IdentityContext).setIdentity(\n Identity.createAuthenticated({\n id: \"test-user\",\n displayName: \"Test User\",\n type: \"admin\",\n roles: [],\n teams: [],\n permissions,\n profile: { external: false },\n currentTenant: { id: \"root\", name: \"Root\" },\n defaultTenant: { id: \"root\", name: \"Root\" }\n })\n );\n\n return container;\n};\n\nconst createEvent = () => {\n return new GraphQLExtensionsEvent({\n endpoint: \"https://api.example.com/graphql\",\n operationName: \"ListCategories\",\n extensions: {\n debug: {\n enabled: true,\n requestId: \"request-1\",\n entries: [{ seq: 1, namespace: \"cms.os.list\", timestamp: 1, elapsed: 0, data: {} }]\n }\n }\n });\n};\n\ndescribe(\"GraphQLExtensionsDebugHandler\", () => {\n beforeEach(() => {\n window.localStorage.clear();\n });\n\n it(\"should collect debug data for an identity with the permission\", async () => {\n const container = createContainer([{ name: \"dev-tools.debug\" }]);\n const repository = container.resolve(DebugSessionsRepository);\n\n expect(repository.isCaptureOn()).toBe(true);\n\n await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());\n\n expect(repository.getSessions()).toHaveLength(1);\n expect(repository.getEntryCount()).toBe(1);\n expect(repository.getSessions()[0].requestId).toBe(\"request-1\");\n });\n\n it(\"should collect nothing once capture is turned off\", async () => {\n const container = createContainer([{ name: \"dev-tools.debug\" }]);\n const repository = container.resolve(DebugSessionsRepository);\n\n repository.setCaptureOn(false);\n await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());\n\n expect(repository.isCaptureOn()).toBe(false);\n expect(repository.getSessions()).toHaveLength(0);\n });\n\n it(\"should not treat Dev Tools full access as the permission\", async () => {\n const container = createContainer([{ name: \"dev-tools.*\" }]);\n const repository = container.resolve(DebugSessionsRepository);\n\n await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());\n\n expect(repository.canCapture()).toBe(false);\n expect(repository.isCaptureOn()).toBe(false);\n expect(repository.getSessions()).toHaveLength(0);\n });\n\n it(\"should drop everything on clear\", async () => {\n const container = createContainer([{ name: \"dev-tools.debug\" }]);\n const repository = container.resolve(DebugSessionsRepository);\n\n await container.resolve(GraphQLExtensionsEventHandler).handle(createEvent());\n repository.clear();\n\n expect(repository.getSessions()).toHaveLength(0);\n expect(repository.getEntryCount()).toBe(0);\n });\n});\n"],"names":["createContainer","permissions","container","Container","IdentityContextImpl","LocalStorageFeature","DebuggerFeature","IdentityContext","Identity","createEvent","GraphQLExtensionsEvent","describe","beforeEach","window","it","repository","DebugSessionsRepository","expect","GraphQLExtensionsEventHandler"],"mappings":";;;;;;;;;AAWA,MAAMA,kBAAkB,CAACC;IACrB,MAAMC,YAAY,IAAIC;IACtBD,UAAU,QAAQ,CAACE,oCAAqB,gBAAgB;IACxDC,oBAAoB,QAAQ,CAACH,WAAW;QAAE,QAAQ;IAAO;IACzDI,gBAAgB,QAAQ,CAACJ;IAEzBA,UAAU,OAAO,CAACK,iBAAiB,WAAW,CAC1CC,SAAS,mBAAmB,CAAC;QACzB,IAAI;QACJ,aAAa;QACb,MAAM;QACN,OAAO,EAAE;QACT,OAAO,EAAE;QACTP;QACA,SAAS;YAAE,UAAU;QAAM;QAC3B,eAAe;YAAE,IAAI;YAAQ,MAAM;QAAO;QAC1C,eAAe;YAAE,IAAI;YAAQ,MAAM;QAAO;IAC9C;IAGJ,OAAOC;AACX;AAEA,MAAMO,cAAc,IACT,IAAIC,uBAAuB;QAC9B,UAAU;QACV,eAAe;QACf,YAAY;YACR,OAAO;gBACH,SAAS;gBACT,WAAW;gBACX,SAAS;oBAAC;wBAAE,KAAK;wBAAG,WAAW;wBAAe,WAAW;wBAAG,SAAS;wBAAG,MAAM,CAAC;oBAAE;iBAAE;YACvF;QACJ;IACJ;AAGJC,SAAS,iCAAiC;IACtCC,WAAW;QACPC,OAAO,YAAY,CAAC,KAAK;IAC7B;IAEAC,GAAG,iEAAiE;QAChE,MAAMZ,YAAYF,gBAAgB;YAAC;gBAAE,MAAM;YAAkB;SAAE;QAC/D,MAAMe,aAAab,UAAU,OAAO,CAACc;QAErCC,OAAOF,WAAW,WAAW,IAAI,IAAI,CAAC;QAEtC,MAAMb,UAAU,OAAO,CAACgB,+BAA+B,MAAM,CAACT;QAE9DQ,OAAOF,WAAW,WAAW,IAAI,YAAY,CAAC;QAC9CE,OAAOF,WAAW,aAAa,IAAI,IAAI,CAAC;QACxCE,OAAOF,WAAW,WAAW,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IACvD;IAEAD,GAAG,qDAAqD;QACpD,MAAMZ,YAAYF,gBAAgB;YAAC;gBAAE,MAAM;YAAkB;SAAE;QAC/D,MAAMe,aAAab,UAAU,OAAO,CAACc;QAErCD,WAAW,YAAY,CAAC;QACxB,MAAMb,UAAU,OAAO,CAACgB,+BAA+B,MAAM,CAACT;QAE9DQ,OAAOF,WAAW,WAAW,IAAI,IAAI,CAAC;QACtCE,OAAOF,WAAW,WAAW,IAAI,YAAY,CAAC;IAClD;IAEAD,GAAG,4DAA4D;QAC3D,MAAMZ,YAAYF,gBAAgB;YAAC;gBAAE,MAAM;YAAc;SAAE;QAC3D,MAAMe,aAAab,UAAU,OAAO,CAACc;QAErC,MAAMd,UAAU,OAAO,CAACgB,+BAA+B,MAAM,CAACT;QAE9DQ,OAAOF,WAAW,UAAU,IAAI,IAAI,CAAC;QACrCE,OAAOF,WAAW,WAAW,IAAI,IAAI,CAAC;QACtCE,OAAOF,WAAW,WAAW,IAAI,YAAY,CAAC;IAClD;IAEAD,GAAG,mCAAmC;QAClC,MAAMZ,YAAYF,gBAAgB;YAAC;gBAAE,MAAM;YAAkB;SAAE;QAC/D,MAAMe,aAAab,UAAU,OAAO,CAACc;QAErC,MAAMd,UAAU,OAAO,CAACgB,+BAA+B,MAAM,CAACT;QAC9DM,WAAW,KAAK;QAEhBE,OAAOF,WAAW,WAAW,IAAI,YAAY,CAAC;QAC9CE,OAAOF,WAAW,aAAa,IAAI,IAAI,CAAC;IAC5C;AACJ"}
|