@webiny/api-core 0.0.0-unstable.e2758ee1cf → 0.0.0-unstable.e6f0dc8ca7
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/ApiCoreFeature.d.ts +5 -1
- package/ApiCoreFeature.js +6 -0
- package/ApiCoreFeature.js.map +1 -1
- package/createApiCore.d.ts +1 -1
- package/createApiCore.js +2 -3
- package/createApiCore.js.map +1 -1
- package/domain/security/ApiToken.d.ts +1 -0
- package/domain/security/ApiToken.js +1 -0
- package/domain/security/ApiToken.js.map +1 -1
- package/exports/api/build-params.d.ts +1 -0
- package/exports/api/build-params.js +1 -0
- package/exports/api/build-params.js.map +1 -1
- package/exports/api/event-publisher.d.ts +1 -0
- package/exports/api/event-publisher.js +1 -0
- package/exports/api/event-publisher.js.map +1 -1
- package/exports/api/key-value-store.d.ts +1 -0
- package/exports/api/key-value-store.js +1 -0
- package/exports/api/key-value-store.js.map +1 -1
- package/exports/api/logger.d.ts +1 -0
- package/exports/api/logger.js +1 -0
- package/exports/api/logger.js.map +1 -1
- package/exports/api/security/api-key.d.ts +3 -3
- package/exports/api/security/api-key.js +3 -3
- package/exports/api/security/api-key.js.map +1 -1
- package/exports/api/security/authentication.d.ts +1 -1
- package/exports/api/security/authentication.js +1 -1
- package/exports/api/security/authentication.js.map +1 -1
- package/exports/api/security/role.d.ts +3 -3
- package/exports/api/security/role.js +3 -3
- package/exports/api/security/role.js.map +1 -1
- package/exports/api/security/user.d.ts +3 -3
- package/exports/api/security/user.js +3 -3
- package/exports/api/security/user.js.map +1 -1
- package/exports/api/security.d.ts +6 -0
- package/exports/api/security.js +5 -0
- package/exports/api/security.js.map +1 -1
- package/exports/api/system.d.ts +1 -1
- package/exports/api/system.js +1 -1
- package/exports/api/system.js.map +1 -1
- package/exports/api/tenancy.d.ts +4 -4
- package/exports/api/tenancy.js +4 -4
- package/exports/api/tenancy.js.map +1 -1
- package/exports/api.d.ts +7 -0
- package/exports/api.js +8 -0
- package/exports/api.js.map +1 -0
- package/features/ai/Ai.d.ts +26 -0
- package/features/ai/Ai.js +133 -0
- package/features/ai/Ai.js.map +1 -0
- package/features/ai/AiSdkTools.d.ts +11 -0
- package/features/ai/AiSdkTools.js +25 -0
- package/features/ai/AiSdkTools.js.map +1 -0
- package/features/ai/AnthropicSdkFactory.d.ts +10 -0
- package/features/ai/AnthropicSdkFactory.js +71 -0
- package/features/ai/AnthropicSdkFactory.js.map +1 -0
- package/features/ai/OpenAiSdkFactory.d.ts +10 -0
- package/features/ai/OpenAiSdkFactory.js +187 -0
- package/features/ai/OpenAiSdkFactory.js.map +1 -0
- package/features/ai/abstractions.d.ts +92 -0
- package/features/ai/abstractions.js +35 -0
- package/features/ai/abstractions.js.map +1 -0
- package/features/ai/feature.d.ts +4 -0
- package/features/ai/feature.js +16 -0
- package/features/ai/feature.js.map +1 -0
- package/features/ai/index.d.ts +3 -0
- package/features/ai/index.js +4 -0
- package/features/ai/index.js.map +1 -0
- package/features/buildParams/abstractions.d.ts +2 -0
- package/features/buildParams/abstractions.js +2 -0
- package/features/buildParams/abstractions.js.map +1 -1
- package/features/buildParams/feature.d.ts +5 -1
- package/features/encryption/EncryptionService.d.ts +10 -0
- package/features/encryption/EncryptionService.js +58 -0
- package/features/encryption/EncryptionService.js.map +1 -0
- package/features/encryption/abstractions.d.ts +9 -0
- package/features/encryption/abstractions.js +5 -0
- package/features/encryption/abstractions.js.map +1 -0
- package/features/encryption/feature.d.ts +4 -0
- package/features/encryption/feature.js +10 -0
- package/features/encryption/feature.js.map +1 -0
- package/features/encryption/index.d.ts +1 -0
- package/features/encryption/index.js +3 -0
- package/features/encryption/index.js.map +1 -0
- package/features/eventPublisher/abstractions.d.ts +2 -0
- package/features/eventPublisher/abstractions.js +3 -0
- package/features/eventPublisher/abstractions.js.map +1 -1
- package/features/eventPublisher/feature.d.ts +5 -1
- package/features/featureFlags/feature.d.ts +5 -1
- package/features/keyValueStore/GlobalKeyValueStore.js +3 -1
- package/features/keyValueStore/GlobalKeyValueStore.js.map +1 -1
- package/features/keyValueStore/KeyValueStoreRepository.d.ts +2 -2
- package/features/keyValueStore/KeyValueStoreRepository.js +2 -2
- package/features/keyValueStore/KeyValueStoreRepository.js.map +1 -1
- package/features/keyValueStore/abstractions.d.ts +10 -2
- package/features/keyValueStore/abstractions.js +4 -0
- package/features/keyValueStore/abstractions.js.map +1 -1
- package/features/keyValueStore/feature.d.ts +4 -1
- package/features/keyValueStore/feature.js.map +1 -1
- package/features/logger/abstractions.d.ts +1 -0
- package/features/logger/abstractions.js +1 -0
- package/features/logger/abstractions.js.map +1 -1
- package/features/logger/feature.d.ts +4 -1
- package/features/masker/Masker.d.ts +8 -0
- package/features/masker/Masker.js +21 -0
- package/features/masker/Masker.js.map +1 -0
- package/features/masker/abstractions.d.ts +11 -0
- package/features/masker/abstractions.js +4 -0
- package/features/masker/abstractions.js.map +1 -0
- package/features/masker/feature.d.ts +4 -0
- package/features/masker/feature.js +10 -0
- package/features/masker/feature.js.map +1 -0
- package/features/masker/index.d.ts +1 -0
- package/features/masker/index.js +3 -0
- package/features/masker/index.js.map +1 -0
- package/features/security/IdentityContext/abstractions.d.ts +1 -0
- package/features/security/IdentityContext/abstractions.js +1 -0
- package/features/security/IdentityContext/abstractions.js.map +1 -1
- package/features/security/IdentityContext/feature.d.ts +4 -1
- package/features/security/SecurityFeature.d.ts +5 -1
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +1 -1
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/CreateApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/events.d.ts +6 -4
- package/features/security/apiKeys/CreateApiKey/events.js +8 -4
- package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/feature.d.ts +4 -1
- package/features/security/apiKeys/DeleteApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/DeleteApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/events.d.ts +6 -4
- package/features/security/apiKeys/DeleteApiKey/events.js +8 -4
- package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/feature.d.ts +4 -1
- package/features/security/apiKeys/GetApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKey/feature.d.ts +4 -1
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/feature.d.ts +4 -1
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/feature.d.ts +4 -1
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +1 -1
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/abstractions.d.ts +1 -0
- package/features/security/apiKeys/ListApiKeys/abstractions.js +1 -0
- package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/feature.d.ts +4 -1
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +1 -1
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/UpdateApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/events.d.ts +6 -4
- package/features/security/apiKeys/UpdateApiKey/events.js +8 -4
- package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/feature.d.ts +4 -1
- package/features/security/apiKeys/feature.d.ts +4 -1
- package/features/security/apiKeys/shared/abstractions.d.ts +5 -2
- package/features/security/apiKeys/shared/abstractions.js +3 -0
- package/features/security/apiKeys/shared/abstractions.js.map +1 -1
- package/features/security/apiKeys/shared/schemas.d.ts +10 -71
- package/features/security/apiKeys/shared/schemas.js +4 -4
- package/features/security/apiKeys/shared/schemas.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.d.ts +2 -2
- package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js +2 -2
- package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/abstractions.d.ts +1 -0
- package/features/security/authentication/AuthenticationContext/abstractions.js +1 -0
- package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/events.d.ts +6 -4
- package/features/security/authentication/AuthenticationContext/events.js +8 -4
- package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/feature.d.ts +4 -1
- package/features/security/authentication/Authenticator/abstractions.d.ts +1 -0
- package/features/security/authentication/Authenticator/abstractions.js +1 -0
- package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/AuthorizationContext.d.ts +1 -0
- package/features/security/authorization/AuthorizationContext/AuthorizationContext.js +14 -2
- package/features/security/authorization/AuthorizationContext/AuthorizationContext.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/abstractions.d.ts +2 -0
- package/features/security/authorization/AuthorizationContext/abstractions.js +2 -0
- package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/feature.d.ts +4 -1
- package/features/security/authorization/Authorizer/abstractions.d.ts +1 -0
- package/features/security/authorization/Authorizer/abstractions.js +1 -0
- package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
- package/features/security/authorization/GroupsTeamsAuthorizer/feature.d.ts +4 -1
- package/features/security/login/abstractions.d.ts +3 -2
- package/features/security/login/abstractions.js +4 -2
- package/features/security/login/abstractions.js.map +1 -1
- package/features/security/permissions/createPermissionSchema.d.ts +2 -0
- package/features/security/permissions/createPermissionSchema.js +8 -0
- package/features/security/permissions/createPermissionSchema.js.map +1 -0
- package/features/security/permissions/createPermissions.d.ts +5 -5
- package/features/security/permissions/createPermissions.js +198 -188
- package/features/security/permissions/createPermissions.js.map +1 -1
- package/features/security/permissions/index.d.ts +2 -1
- package/features/security/permissions/index.js +2 -1
- package/features/security/permissions/index.js.map +1 -1
- package/features/security/roles/CreateRole/CreateRoleUseCase.d.ts +1 -3
- package/features/security/roles/CreateRole/CreateRoleUseCase.js +3 -7
- package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
- package/features/security/roles/CreateRole/abstractions.d.ts +1 -0
- package/features/security/roles/CreateRole/abstractions.js +1 -0
- package/features/security/roles/CreateRole/abstractions.js.map +1 -1
- package/features/security/roles/CreateRole/events.d.ts +6 -4
- package/features/security/roles/CreateRole/events.js +8 -4
- package/features/security/roles/CreateRole/events.js.map +1 -1
- package/features/security/roles/CreateRole/feature.d.ts +4 -1
- package/features/security/roles/CreateRole/schema.d.ts +2 -20
- package/features/security/roles/CreateRole/schema.js +2 -2
- package/features/security/roles/CreateRole/schema.js.map +1 -1
- package/features/security/roles/DeleteRole/abstractions.d.ts +1 -0
- package/features/security/roles/DeleteRole/abstractions.js +1 -0
- package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
- package/features/security/roles/DeleteRole/events.d.ts +6 -4
- package/features/security/roles/DeleteRole/events.js +8 -4
- package/features/security/roles/DeleteRole/events.js.map +1 -1
- package/features/security/roles/DeleteRole/feature.d.ts +4 -1
- package/features/security/roles/GetRole/abstractions.d.ts +1 -0
- package/features/security/roles/GetRole/abstractions.js +1 -0
- package/features/security/roles/GetRole/abstractions.js.map +1 -1
- package/features/security/roles/GetRole/feature.d.ts +4 -1
- package/features/security/roles/ListRoles/abstractions.d.ts +1 -0
- package/features/security/roles/ListRoles/abstractions.js +1 -0
- package/features/security/roles/ListRoles/abstractions.js.map +1 -1
- package/features/security/roles/ListRoles/feature.d.ts +4 -1
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +1 -1
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
- package/features/security/roles/UpdateRole/abstractions.d.ts +1 -0
- package/features/security/roles/UpdateRole/abstractions.js +1 -0
- package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
- package/features/security/roles/UpdateRole/events.d.ts +6 -4
- package/features/security/roles/UpdateRole/events.js +8 -4
- package/features/security/roles/UpdateRole/events.js.map +1 -1
- package/features/security/roles/UpdateRole/feature.d.ts +4 -1
- package/features/security/roles/UpdateRole/schema.d.ts +2 -18
- package/features/security/roles/UpdateRole/schema.js +2 -2
- package/features/security/roles/UpdateRole/schema.js.map +1 -1
- package/features/security/roles/feature.d.ts +4 -1
- package/features/security/roles/feature.js +2 -0
- package/features/security/roles/feature.js.map +1 -1
- package/features/security/roles/shared/RoleProvider.d.ts +13 -0
- package/features/security/roles/shared/RoleProvider.js +29 -0
- package/features/security/roles/shared/RoleProvider.js.map +1 -0
- package/features/security/roles/shared/RolesRepository.d.ts +3 -1
- package/features/security/roles/shared/RolesRepository.js +19 -18
- package/features/security/roles/shared/RolesRepository.js.map +1 -1
- package/features/security/roles/shared/abstractions.d.ts +19 -0
- package/features/security/roles/shared/abstractions.js +3 -0
- package/features/security/roles/shared/abstractions.js.map +1 -1
- package/features/security/shared/abstractions.d.ts +5 -14
- package/features/security/shared/abstractions.js +3 -16
- package/features/security/shared/abstractions.js.map +1 -1
- package/features/security/teams/CreateTeam/CreateTeamUseCase.d.ts +1 -3
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js +3 -7
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
- package/features/security/teams/CreateTeam/abstractions.d.ts +1 -0
- package/features/security/teams/CreateTeam/abstractions.js +1 -0
- package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
- package/features/security/teams/CreateTeam/events.d.ts +6 -4
- package/features/security/teams/CreateTeam/events.js +8 -4
- package/features/security/teams/CreateTeam/events.js.map +1 -1
- package/features/security/teams/CreateTeam/feature.d.ts +4 -1
- package/features/security/teams/CreateTeam/index.d.ts +1 -1
- package/features/security/teams/CreateTeam/index.js +1 -1
- package/features/security/teams/CreateTeam/index.js.map +1 -1
- package/features/security/teams/CreateTeam/schema.d.ts +2 -12
- package/features/security/teams/DeleteTeam/abstractions.d.ts +1 -0
- package/features/security/teams/DeleteTeam/abstractions.js +1 -0
- package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
- package/features/security/teams/DeleteTeam/events.d.ts +6 -4
- package/features/security/teams/DeleteTeam/events.js +8 -4
- package/features/security/teams/DeleteTeam/events.js.map +1 -1
- package/features/security/teams/DeleteTeam/feature.d.ts +4 -1
- package/features/security/teams/GetTeam/abstractions.d.ts +1 -0
- package/features/security/teams/GetTeam/abstractions.js +1 -0
- package/features/security/teams/GetTeam/abstractions.js.map +1 -1
- package/features/security/teams/GetTeam/feature.d.ts +4 -1
- package/features/security/teams/ListTeams/abstractions.d.ts +1 -0
- package/features/security/teams/ListTeams/abstractions.js +1 -0
- package/features/security/teams/ListTeams/abstractions.js.map +1 -1
- package/features/security/teams/ListTeams/feature.d.ts +4 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +1 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
- package/features/security/teams/UpdateTeam/abstractions.d.ts +1 -0
- package/features/security/teams/UpdateTeam/abstractions.js +1 -0
- package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
- package/features/security/teams/UpdateTeam/events.d.ts +6 -4
- package/features/security/teams/UpdateTeam/events.js +8 -4
- package/features/security/teams/UpdateTeam/events.js.map +1 -1
- package/features/security/teams/UpdateTeam/feature.d.ts +4 -1
- package/features/security/teams/UpdateTeam/schema.d.ts +2 -10
- package/features/security/teams/feature.d.ts +4 -1
- package/features/security/teams/feature.js +6 -0
- package/features/security/teams/feature.js.map +1 -1
- package/features/security/teams/shared/TeamProvider.d.ts +13 -0
- package/features/security/teams/shared/TeamProvider.js +29 -0
- package/features/security/teams/shared/TeamProvider.js.map +1 -0
- package/features/security/teams/shared/TeamsRepository.js +20 -18
- package/features/security/teams/shared/TeamsRepository.js.map +1 -1
- package/features/security/teams/shared/abstractions.d.ts +18 -0
- package/features/security/teams/shared/abstractions.js +3 -0
- package/features/security/teams/shared/abstractions.js.map +1 -1
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.d.ts +17 -0
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +76 -0
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -0
- package/features/security/utils/verifyJwtUsingJwk.d.ts +2 -4
- package/features/security/utils/verifyJwtUsingJwk.js +1 -1
- package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
- package/features/system/InstallSystem/abstractions.d.ts +4 -5
- package/features/system/InstallSystem/abstractions.js +3 -4
- package/features/system/InstallSystem/abstractions.js.map +1 -1
- package/features/system/InstallSystem/events.js +2 -2
- package/features/system/InstallSystem/events.js.map +1 -1
- package/features/system/InstallSystem/feature.d.ts +5 -1
- package/features/system/InstallSystem/index.d.ts +1 -1
- package/features/system/InstallSystem/index.js +1 -1
- package/features/system/InstallSystem/index.js.map +1 -1
- package/features/system/SystemFeature.d.ts +4 -1
- package/features/task/TaskController/abstractions.d.ts +1 -0
- package/features/task/TaskController/abstractions.js +1 -0
- package/features/task/TaskController/abstractions.js.map +1 -1
- package/features/task/TaskDefinition/abstractions.d.ts +7 -1
- package/features/task/TaskDefinition/abstractions.js +1 -0
- package/features/task/TaskDefinition/abstractions.js.map +1 -1
- package/features/task/TaskService/abstractions.d.ts +1 -0
- package/features/task/TaskService/abstractions.js +1 -0
- package/features/task/TaskService/abstractions.js.map +1 -1
- package/features/tenancy/CreateTenant/abstractions.d.ts +9 -7
- package/features/tenancy/CreateTenant/abstractions.js +7 -5
- package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
- package/features/tenancy/CreateTenant/events.js +3 -3
- package/features/tenancy/CreateTenant/events.js.map +1 -1
- package/features/tenancy/CreateTenant/feature.d.ts +5 -1
- package/features/tenancy/CreateTenant/index.d.ts +1 -1
- package/features/tenancy/CreateTenant/index.js +1 -1
- package/features/tenancy/CreateTenant/index.js.map +1 -1
- package/features/tenancy/DeleteTenant/abstractions.d.ts +9 -4
- package/features/tenancy/DeleteTenant/abstractions.js +7 -2
- package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
- package/features/tenancy/DeleteTenant/events.js +3 -3
- package/features/tenancy/DeleteTenant/events.js.map +1 -1
- package/features/tenancy/DeleteTenant/feature.d.ts +5 -1
- package/features/tenancy/DeleteTenant/index.d.ts +1 -1
- package/features/tenancy/DeleteTenant/index.js +1 -1
- package/features/tenancy/DeleteTenant/index.js.map +1 -1
- package/features/tenancy/GetRootTenant/feature.d.ts +5 -1
- package/features/tenancy/GetTenantById/abstractions.d.ts +3 -0
- package/features/tenancy/GetTenantById/abstractions.js +3 -9
- package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
- package/features/tenancy/GetTenantById/feature.d.ts +5 -1
- package/features/tenancy/InstallTenant/abstractions.d.ts +5 -11
- package/features/tenancy/InstallTenant/abstractions.js +4 -13
- package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
- package/features/tenancy/InstallTenant/events.js +2 -2
- package/features/tenancy/InstallTenant/events.js.map +1 -1
- package/features/tenancy/InstallTenant/feature.d.ts +5 -1
- package/features/tenancy/InstallTenant/index.d.ts +1 -1
- package/features/tenancy/InstallTenant/index.js +1 -1
- package/features/tenancy/InstallTenant/index.js.map +1 -1
- package/features/tenancy/ListTenants/feature.d.ts +5 -1
- package/features/tenancy/TenancyFeature.d.ts +4 -1
- package/features/tenancy/TenancyFeature.js.map +1 -1
- package/features/tenancy/TenantContext/abstractions.d.ts +1 -0
- package/features/tenancy/TenantContext/abstractions.js +1 -0
- package/features/tenancy/TenantContext/abstractions.js.map +1 -1
- package/features/tenancy/TenantContext/feature.d.ts +4 -1
- package/features/tenancy/UpdateTenant/abstractions.d.ts +9 -4
- package/features/tenancy/UpdateTenant/abstractions.js +7 -2
- package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
- package/features/tenancy/UpdateTenant/events.js +3 -3
- package/features/tenancy/UpdateTenant/events.js.map +1 -1
- package/features/tenancy/UpdateTenant/feature.d.ts +5 -1
- package/features/tenancy/UpdateTenant/index.d.ts +1 -1
- package/features/tenancy/UpdateTenant/index.js +1 -1
- package/features/tenancy/UpdateTenant/index.js.map +1 -1
- package/features/users/AdminUsersFeature.d.ts +4 -1
- package/features/users/AdminUsersFeature.js.map +1 -1
- package/features/users/CreateUser/CreateUserUseCase.js +1 -1
- package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
- package/features/users/CreateUser/abstractions.d.ts +1 -0
- package/features/users/CreateUser/abstractions.js +1 -1
- package/features/users/CreateUser/abstractions.js.map +1 -1
- package/features/users/CreateUser/events.d.ts +6 -4
- package/features/users/CreateUser/events.js +8 -4
- package/features/users/CreateUser/events.js.map +1 -1
- package/features/users/CreateUser/feature.d.ts +4 -1
- package/features/users/CreateUser/schema.d.ts +4 -36
- package/features/users/DeleteUser/abstractions.d.ts +1 -0
- package/features/users/DeleteUser/abstractions.js +1 -1
- package/features/users/DeleteUser/abstractions.js.map +1 -1
- package/features/users/DeleteUser/events.d.ts +6 -4
- package/features/users/DeleteUser/events.js +8 -4
- package/features/users/DeleteUser/events.js.map +1 -1
- package/features/users/DeleteUser/feature.d.ts +4 -1
- package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.d.ts +3 -3
- package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js +2 -2
- package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js.map +1 -1
- package/features/users/ExternalIdpUserSync/feature.d.ts +4 -1
- package/features/users/GetIdentityProfile/feature.d.ts +4 -1
- package/features/users/GetUser/abstractions.d.ts +1 -0
- package/features/users/GetUser/abstractions.js +1 -1
- package/features/users/GetUser/abstractions.js.map +1 -1
- package/features/users/GetUser/feature.d.ts +4 -1
- package/features/users/ListUserTeams/abstractions.d.ts +1 -0
- package/features/users/ListUserTeams/abstractions.js +1 -1
- package/features/users/ListUserTeams/abstractions.js.map +1 -1
- package/features/users/ListUserTeams/feature.d.ts +4 -1
- package/features/users/ListUsers/abstractions.d.ts +1 -0
- package/features/users/ListUsers/abstractions.js +1 -1
- package/features/users/ListUsers/abstractions.js.map +1 -1
- package/features/users/ListUsers/feature.d.ts +4 -1
- package/features/users/UpdateUser/UpdateUserUseCase.js +1 -1
- package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
- package/features/users/UpdateUser/abstractions.d.ts +1 -0
- package/features/users/UpdateUser/abstractions.js +1 -1
- package/features/users/UpdateUser/abstractions.js.map +1 -1
- package/features/users/UpdateUser/events.d.ts +6 -4
- package/features/users/UpdateUser/events.js +8 -4
- package/features/users/UpdateUser/events.js.map +1 -1
- package/features/users/UpdateUser/feature.d.ts +4 -1
- package/features/users/UpdateUser/schema.d.ts +4 -30
- package/features/users/shared/abstractions.d.ts +1 -0
- package/features/users/shared/abstractions.js +1 -1
- package/features/users/shared/abstractions.js.map +1 -1
- package/features/wcp/WcpContext/WcpContext.d.ts +3 -0
- package/features/wcp/WcpContext/WcpContext.js +9 -0
- package/features/wcp/WcpContext/WcpContext.js.map +1 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.d.ts +15 -0
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +24 -3
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
- package/features/wcp/WcpContext/feature.d.ts +5 -1
- package/features/wcp/WcpFeature.d.ts +4 -1
- package/features/wcp/WcpFeature.js.map +1 -1
- package/graphql/security/NotAuthorizedResponse.d.ts +1 -0
- package/graphql/security/NotAuthorizedResponse.js +1 -0
- package/graphql/security/NotAuthorizedResponse.js.map +1 -1
- package/graphql/wcp/graphql.js +1 -0
- package/graphql/wcp/graphql.js.map +1 -1
- package/idp/abstractions.d.ts +4 -0
- package/idp/abstractions.js +4 -0
- package/idp/abstractions.js.map +1 -1
- package/idp/feature.d.ts +4 -1
- package/legacy/security/createSecurityContext.js +0 -11
- package/legacy/security/createSecurityContext.js.map +1 -1
- package/legacy/security/plugins/authenticateUsingHttpHeader.d.ts +1 -1
- package/legacy/wcp/LegacyWcpContext.d.ts +3 -0
- package/legacy/wcp/LegacyWcpContext.js +9 -0
- package/legacy/wcp/LegacyWcpContext.js.map +1 -1
- package/legacy/wcp/context.d.ts +1 -3
- package/legacy/wcp/context.js +4 -2
- package/legacy/wcp/context.js.map +1 -1
- package/models/base/BaseModel.js +2 -2
- package/models/base/BaseModel.js.map +1 -1
- package/models/base/ModelBuilder.d.ts +2 -2
- package/models/base/ModelBuilder.js +21 -2
- package/models/base/ModelBuilder.js.map +1 -1
- package/models/cms/FieldBuilder.d.ts +3 -2
- package/models/cms/FieldBuilder.js +12 -17
- package/models/cms/FieldBuilder.js.map +1 -1
- package/models/cms/FieldBuilderRegistry.d.ts +1 -1
- package/models/cms/FieldBuilderRegistry.js.map +1 -1
- package/models/cms/FieldDefinitionsBuilder.d.ts +1 -0
- package/models/cms/FieldDefinitionsBuilder.js +15 -17
- package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
- package/models/cms/PrivateCmsModelBuilder.js +1 -1
- package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
- package/models/cms/abstractions.d.ts +1 -1
- package/models/cms/abstractions.js.map +1 -1
- package/models/cms/fieldsBuilder.md +4 -2
- package/models/simple/Page/abstractions.d.ts +1 -11
- package/package.json +27 -68
- package/types/security.d.ts +13 -10
- package/types/security.js.map +1 -1
- package/features/security/shared/abstractions.ts.bak +0 -52
- package/legacy/security/plugins/SecurityRolePlugin.d.ts +0 -16
- package/legacy/security/plugins/SecurityRolePlugin.js +0 -33
- package/legacy/security/plugins/SecurityRolePlugin.js.map +0 -1
- package/legacy/security/plugins/SecurityTeamPlugin.d.ts +0 -16
- package/legacy/security/plugins/SecurityTeamPlugin.js +0 -33
- package/legacy/security/plugins/SecurityTeamPlugin.js.map +0 -1
|
@@ -4,17 +4,21 @@ import { DomainEvent } from "../../eventPublisher/index.js";
|
|
|
4
4
|
export class UserBeforeCreateEvent extends DomainEvent {
|
|
5
5
|
eventType = "user.beforeCreate";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return UserBeforeCreateEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
/** Hook into user lifecycle before a user is created. */
|
|
12
|
+
export const UserBeforeCreateEventHandler = createAbstraction("UserBeforeCreateEventHandler");
|
|
11
13
|
// After Create Event
|
|
12
14
|
export class UserAfterCreateEvent extends DomainEvent {
|
|
13
15
|
eventType = "user.afterCreate";
|
|
14
16
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
17
|
+
return UserAfterCreateEventHandler;
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
|
-
|
|
20
|
+
|
|
21
|
+
/** Hook into user lifecycle after a user is created. */
|
|
22
|
+
export const UserAfterCreateEventHandler = createAbstraction("UserAfterCreateEventHandler");
|
|
19
23
|
|
|
20
24
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeCreateEvent","eventType","getHandlerAbstraction","
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeCreateEvent","eventType","getHandlerAbstraction","UserBeforeCreateEventHandler","UserAfterCreateEvent","UserAfterCreateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeCreatePayload, UserAfterCreatePayload } from \"./abstractions.js\";\n\n// Before Create Event\nexport class UserBeforeCreateEvent extends DomainEvent<UserBeforeCreatePayload> {\n eventType = \"user.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeCreateEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is created. */\nexport const UserBeforeCreateEventHandler = createAbstraction<IEventHandler<UserBeforeCreateEvent>>(\n \"UserBeforeCreateEventHandler\"\n);\n\nexport namespace UserBeforeCreateEventHandler {\n export type Interface = IEventHandler<UserBeforeCreateEvent>;\n export type Event = UserBeforeCreateEvent;\n}\n\n// After Create Event\nexport class UserAfterCreateEvent extends DomainEvent<UserAfterCreatePayload> {\n eventType = \"user.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterCreateEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is created. */\nexport const UserAfterCreateEventHandler = createAbstraction<IEventHandler<UserAfterCreateEvent>>(\n \"UserAfterCreateEventHandler\"\n);\n\nexport namespace UserAfterCreateEventHandler {\n export type Interface = IEventHandler<UserAfterCreateEvent>;\n export type Event = UserAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -8,40 +8,8 @@ export declare const createUserValidation: z.ZodObject<{
|
|
|
8
8
|
avatar: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
9
9
|
id: z.ZodString;
|
|
10
10
|
src: z.ZodString;
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}, {
|
|
15
|
-
id: string;
|
|
16
|
-
src: string;
|
|
17
|
-
}>>>;
|
|
18
|
-
roles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
19
|
-
teams: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
11
|
+
}, z.core.$strip>>>;
|
|
12
|
+
roles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
13
|
+
teams: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
20
14
|
external: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
21
|
-
},
|
|
22
|
-
email: string;
|
|
23
|
-
external: boolean;
|
|
24
|
-
roles: string[];
|
|
25
|
-
teams: string[];
|
|
26
|
-
firstName?: string | undefined;
|
|
27
|
-
lastName?: string | undefined;
|
|
28
|
-
id?: string | undefined;
|
|
29
|
-
displayName?: string | undefined;
|
|
30
|
-
avatar?: {
|
|
31
|
-
id: string;
|
|
32
|
-
src: string;
|
|
33
|
-
} | null | undefined;
|
|
34
|
-
}, {
|
|
35
|
-
email: string;
|
|
36
|
-
firstName?: string | undefined;
|
|
37
|
-
lastName?: string | undefined;
|
|
38
|
-
external?: boolean | undefined;
|
|
39
|
-
id?: string | undefined;
|
|
40
|
-
displayName?: string | undefined;
|
|
41
|
-
roles?: string[] | undefined;
|
|
42
|
-
teams?: string[] | undefined;
|
|
43
|
-
avatar?: {
|
|
44
|
-
id: string;
|
|
45
|
-
src: string;
|
|
46
|
-
} | null | undefined;
|
|
47
|
-
}>;
|
|
15
|
+
}, z.core.$strip>;
|
|
@@ -11,6 +11,7 @@ export type DeleteUserError = IDeleteUserErrors[keyof IDeleteUserErrors] | Admin
|
|
|
11
11
|
export interface IDeleteUser {
|
|
12
12
|
execute(id: string): Promise<Result<void, DeleteUserError>>;
|
|
13
13
|
}
|
|
14
|
+
/** Delete an admin user. */
|
|
14
15
|
export declare const DeleteUserUseCase: import("@webiny/di").Abstraction<IDeleteUser>;
|
|
15
16
|
export declare namespace DeleteUserUseCase {
|
|
16
17
|
type Interface = IDeleteUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DeleteUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\nimport { CannotDeleteOwnAccountError } from \"./errors.js\";\n\n// Use case specific errors\nexport interface IDeleteUserErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeleteOwnAccount: CannotDeleteOwnAccountError;\n}\n\n// Combined error type (use case errors + repository errors)\nexport type DeleteUserError =\n | IDeleteUserErrors[keyof IDeleteUserErrors]\n | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IDeleteUser {\n execute(id: string): Promise<Result<void, DeleteUserError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","DeleteUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\nimport { CannotDeleteOwnAccountError } from \"./errors.js\";\n\n// Use case specific errors\nexport interface IDeleteUserErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeleteOwnAccount: CannotDeleteOwnAccountError;\n}\n\n// Combined error type (use case errors + repository errors)\nexport type DeleteUserError =\n | IDeleteUserErrors[keyof IDeleteUserErrors]\n | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IDeleteUser {\n execute(id: string): Promise<Result<void, DeleteUserError>>;\n}\n\n/** Delete an admin user. */\nexport const DeleteUserUseCase = createAbstraction<IDeleteUser>(\"DeleteUserUseCase\");\n\n// Namespace exports\nexport namespace DeleteUserUseCase {\n export type Interface = IDeleteUser;\n export type Error = DeleteUserError;\n}\n\n// Event payload types\nexport interface UserBeforeDeletePayload {\n user: AdminUser;\n}\n\nexport interface UserAfterDeletePayload {\n user: AdminUser;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAMA;;AAKA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
|
|
@@ -5,8 +5,9 @@ export declare class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeleteP
|
|
|
5
5
|
eventType: "user.beforeDelete";
|
|
6
6
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserBeforeDeleteEvent>>;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
export declare
|
|
8
|
+
/** Hook into user lifecycle before a user is deleted. */
|
|
9
|
+
export declare const UserBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeDeleteEvent>>;
|
|
10
|
+
export declare namespace UserBeforeDeleteEventHandler {
|
|
10
11
|
type Interface = IEventHandler<UserBeforeDeleteEvent>;
|
|
11
12
|
type Event = UserBeforeDeleteEvent;
|
|
12
13
|
}
|
|
@@ -14,8 +15,9 @@ export declare class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePay
|
|
|
14
15
|
eventType: "user.afterDelete";
|
|
15
16
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserAfterDeleteEvent>>;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
export declare
|
|
18
|
+
/** Hook into user lifecycle after a user is deleted. */
|
|
19
|
+
export declare const UserAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterDeleteEvent>>;
|
|
20
|
+
export declare namespace UserAfterDeleteEventHandler {
|
|
19
21
|
type Interface = IEventHandler<UserAfterDeleteEvent>;
|
|
20
22
|
type Event = UserAfterDeleteEvent;
|
|
21
23
|
}
|
|
@@ -4,17 +4,21 @@ import { DomainEvent } from "../../eventPublisher/index.js";
|
|
|
4
4
|
export class UserBeforeDeleteEvent extends DomainEvent {
|
|
5
5
|
eventType = "user.beforeDelete";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return UserBeforeDeleteEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
/** Hook into user lifecycle before a user is deleted. */
|
|
12
|
+
export const UserBeforeDeleteEventHandler = createAbstraction("UserBeforeDeleteEventHandler");
|
|
11
13
|
// After Delete Event
|
|
12
14
|
export class UserAfterDeleteEvent extends DomainEvent {
|
|
13
15
|
eventType = "user.afterDelete";
|
|
14
16
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
17
|
+
return UserAfterDeleteEventHandler;
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
|
-
|
|
20
|
+
|
|
21
|
+
/** Hook into user lifecycle after a user is deleted. */
|
|
22
|
+
export const UserAfterDeleteEventHandler = createAbstraction("UserAfterDeleteEventHandler");
|
|
19
23
|
|
|
20
24
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeDeleteEvent","eventType","getHandlerAbstraction","
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeDeleteEvent","eventType","getHandlerAbstraction","UserBeforeDeleteEventHandler","UserAfterDeleteEvent","UserAfterDeleteEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeDeletePayload, UserAfterDeletePayload } from \"./abstractions.js\";\n\n// Before Delete Event\nexport class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeletePayload> {\n eventType = \"user.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeDeleteEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is deleted. */\nexport const UserBeforeDeleteEventHandler = createAbstraction<IEventHandler<UserBeforeDeleteEvent>>(\n \"UserBeforeDeleteEventHandler\"\n);\n\nexport namespace UserBeforeDeleteEventHandler {\n export type Interface = IEventHandler<UserBeforeDeleteEvent>;\n export type Event = UserBeforeDeleteEvent;\n}\n\n// After Delete Event\nexport class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePayload> {\n eventType = \"user.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return UserAfterDeleteEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is deleted. */\nexport const UserAfterDeleteEventHandler = createAbstraction<IEventHandler<UserAfterDeleteEvent>>(\n \"UserAfterDeleteEventHandler\"\n);\n\nexport namespace UserAfterDeleteEventHandler {\n export type Interface = IEventHandler<UserAfterDeleteEvent>;\n export type Event = UserAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AfterLoginEventHandler } from "../../../features/security/login/index.js";
|
|
2
2
|
import { IdentityContext } from "../../../features/security/IdentityContext/index.js";
|
|
3
3
|
import { ListRolesUseCase } from "../../../features/security/roles/ListRoles/index.js";
|
|
4
4
|
import { ListTeamsUseCase } from "../../../features/security/teams/ListTeams/index.js";
|
|
5
5
|
import { GetUserUseCase } from "../../../features/users/GetUser/index.js";
|
|
6
6
|
import { CreateUserUseCase } from "../../../features/users/CreateUser/index.js";
|
|
7
7
|
import { UpdateUserUseCase } from "../../../features/users/UpdateUser/index.js";
|
|
8
|
-
declare class ExternalIdpUserSyncHandlerImpl implements
|
|
8
|
+
declare class ExternalIdpUserSyncHandlerImpl implements AfterLoginEventHandler.Interface {
|
|
9
9
|
private identityContext;
|
|
10
10
|
private getUserUseCase;
|
|
11
11
|
private createUserUseCase;
|
|
@@ -13,7 +13,7 @@ declare class ExternalIdpUserSyncHandlerImpl implements AfterLoginHandler.Interf
|
|
|
13
13
|
private listRolesUseCase;
|
|
14
14
|
private listTeamsUseCase;
|
|
15
15
|
constructor(identityContext: IdentityContext.Interface, getUserUseCase: GetUserUseCase.Interface, createUserUseCase: CreateUserUseCase.Interface, updateUserUseCase: UpdateUserUseCase.Interface, listRolesUseCase: ListRolesUseCase.Interface, listTeamsUseCase: ListTeamsUseCase.Interface);
|
|
16
|
-
handle(event:
|
|
16
|
+
handle(event: AfterLoginEventHandler.Event): Promise<void>;
|
|
17
17
|
}
|
|
18
18
|
export declare const ExternalIdpUserSyncHandler: import("@webiny/di").Implementation<typeof ExternalIdpUserSyncHandlerImpl>;
|
|
19
19
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createImplementation } from "@webiny/feature/api";
|
|
2
|
-
import {
|
|
2
|
+
import { AfterLoginEventHandler } from "../../security/login/index.js";
|
|
3
3
|
import { IdentityContext } from "../../security/IdentityContext/index.js";
|
|
4
4
|
import { ListRolesUseCase } from "../../security/roles/ListRoles/index.js";
|
|
5
5
|
import { ListTeamsUseCase } from "../../security/teams/ListTeams/index.js";
|
|
@@ -81,7 +81,7 @@ class ExternalIdpUserSyncHandlerImpl {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
export const ExternalIdpUserSyncHandler = createImplementation({
|
|
84
|
-
abstraction:
|
|
84
|
+
abstraction: AfterLoginEventHandler,
|
|
85
85
|
implementation: ExternalIdpUserSyncHandlerImpl,
|
|
86
86
|
dependencies: [IdentityContext, GetUserUseCase, CreateUserUseCase, UpdateUserUseCase, ListRolesUseCase, ListTeamsUseCase]
|
|
87
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createImplementation","
|
|
1
|
+
{"version":3,"names":["createImplementation","AfterLoginEventHandler","IdentityContext","ListRolesUseCase","ListTeamsUseCase","GetUserUseCase","CreateUserUseCase","UpdateUserUseCase","ExternalIdpUserSyncHandlerImpl","constructor","identityContext","getUserUseCase","createUserUseCase","updateUserUseCase","listRolesUseCase","listTeamsUseCase","handle","event","identity","payload","profile","external","withoutAuthorization","getUserResult","execute","id","data","displayName","email","firstName","lastName","roles","teams","roleSlugs","length","listRolesResult","where","slug_in","isOk","value","map","role","teamSlugs","listTeamsResult","team","ExternalIdpUserSyncHandler","abstraction","implementation","dependencies"],"sources":["ExternalIdpUserSyncHandler.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { AfterLoginEventHandler } from \"~/features/security/login/index.js\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { ListRolesUseCase } from \"~/features/security/roles/ListRoles/index.js\";\nimport { ListTeamsUseCase } from \"~/features/security/teams/ListTeams/index.js\";\nimport { GetUserUseCase } from \"~/features/users/GetUser/index.js\";\nimport { CreateUserUseCase } from \"~/features/users/CreateUser/index.js\";\nimport { UpdateUserUseCase } from \"~/features/users/UpdateUser/index.js\";\n\nclass ExternalIdpUserSyncHandlerImpl implements AfterLoginEventHandler.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserUseCase: GetUserUseCase.Interface,\n private createUserUseCase: CreateUserUseCase.Interface,\n private updateUserUseCase: UpdateUserUseCase.Interface,\n private listRolesUseCase: ListRolesUseCase.Interface,\n private listTeamsUseCase: ListTeamsUseCase.Interface\n ) {}\n\n async handle(event: AfterLoginEventHandler.Event): Promise<void> {\n const { identity } = event.payload;\n\n // We only sync external identities\n if (!identity.profile.external) {\n return;\n }\n\n await this.identityContext.withoutAuthorization(async () => {\n // Check if user exists\n const getUserResult = await this.getUserUseCase.execute({ id: identity.id });\n\n // Prepare user data\n const id = identity.id;\n\n const data = {\n displayName: identity.displayName,\n email: identity.profile.email,\n firstName: identity.profile.firstName || \"\",\n lastName: identity.profile.lastName || \"\",\n roles: [] as string[],\n teams: [] as string[],\n external: true\n };\n\n // Resolve roles\n const roleSlugs = identity.roles;\n if (roleSlugs.length > 0) {\n const listRolesResult = await this.listRolesUseCase.execute({\n where: { slug_in: roleSlugs }\n });\n if (listRolesResult.isOk()) {\n data.roles = listRolesResult.value.map(role => role.id);\n }\n }\n\n // Resolve teams\n const teamSlugs = identity.teams;\n if (teamSlugs.length > 0) {\n const listTeamsResult = await this.listTeamsUseCase.execute({\n where: { slug_in: teamSlugs }\n });\n if (listTeamsResult.isOk()) {\n data.teams = listTeamsResult.value.map(team => team.id);\n }\n }\n\n // Update or create user\n if (getUserResult.isOk()) {\n await this.updateUserUseCase.execute(identity.id, data);\n return;\n }\n\n await this.createUserUseCase.execute({ id, ...data });\n });\n }\n}\n\nexport const ExternalIdpUserSyncHandler = createImplementation({\n abstraction: AfterLoginEventHandler,\n implementation: ExternalIdpUserSyncHandlerImpl,\n dependencies: [\n IdentityContext,\n GetUserUseCase,\n CreateUserUseCase,\n UpdateUserUseCase,\n ListRolesUseCase,\n ListTeamsUseCase\n ]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ type GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.
|
|
|
10
10
|
export interface IGetUser {
|
|
11
11
|
execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;
|
|
12
12
|
}
|
|
13
|
+
/** Retrieve an admin user. */
|
|
13
14
|
export declare const GetUserUseCase: import("@webiny/di").Abstraction<IGetUser>;
|
|
14
15
|
export declare namespace GetUserUseCase {
|
|
15
16
|
type Interface = IGetUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","GetUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { GetUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IGetUserErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IGetUser {\n execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","GetUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { GetUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IGetUserErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IGetUser {\n execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;\n}\n\n/** Retrieve an admin user. */\nexport const GetUserUseCase = createAbstraction<IGetUser>(\"GetUserUseCase\");\n\n// Namespace exports\nexport namespace GetUserUseCase {\n export type Interface = IGetUser;\n export type Error = GetUserError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAW,gBAAgB,CAAC;;AAE3E","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ type ListUserTeamsError = AdminUsersRepository.Error;
|
|
|
7
7
|
export interface IListUserTeams {
|
|
8
8
|
execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;
|
|
9
9
|
}
|
|
10
|
+
/** List teams assigned to a user. */
|
|
10
11
|
export declare const ListUserTeamsUseCase: import("@webiny/di").Abstraction<IListUserTeams>;
|
|
11
12
|
export declare namespace ListUserTeamsUseCase {
|
|
12
13
|
type Interface = IListUserTeams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","ListUserTeamsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team } from \"~/types/security.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\n\n// Use case specific errors - none for this use case\nexport interface IListUserTeamsErrors {\n // No specific errors beyond repository errors\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUserTeamsError = AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUserTeams {\n execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","ListUserTeamsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team } from \"~/types/security.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\n\n// Use case specific errors - none for this use case\nexport interface IListUserTeamsErrors {\n // No specific errors beyond repository errors\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUserTeamsError = AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUserTeams {\n execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;\n}\n\n/** List teams assigned to a user. */\nexport const ListUserTeamsUseCase = createAbstraction<IListUserTeams>(\"ListUserTeamsUseCase\");\n\n// Namespace exports\nexport namespace ListUserTeamsUseCase {\n export type Interface = IListUserTeams;\n export type Error = ListUserTeamsError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAKvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,oBAAoB,GAAGD,iBAAiB,CAAiB,sBAAsB,CAAC;;AAE7F","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ type ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepos
|
|
|
10
10
|
export interface IListUsers {
|
|
11
11
|
execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;
|
|
12
12
|
}
|
|
13
|
+
/** List all admin users. */
|
|
13
14
|
export declare const ListUsersUseCase: import("@webiny/di").Abstraction<IListUsers>;
|
|
14
15
|
export declare namespace ListUsersUseCase {
|
|
15
16
|
type Interface = IListUsers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","ListUsersUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { ListUsersInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IListUsersErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUsers {\n execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","ListUsersUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { ListUsersInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IListUsersErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUsers {\n execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;\n}\n\n/** List all admin users. */\nexport const ListUsersUseCase = createAbstraction<IListUsers>(\"ListUsersUseCase\");\n\n// Namespace exports\nexport namespace ListUsersUseCase {\n export type Interface = IListUsers;\n export type Error = ListUsersError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAa,kBAAkB,CAAC;;AAEjF","ignoreList":[]}
|
|
@@ -23,7 +23,7 @@ class UpdateUserUseCaseImpl {
|
|
|
23
23
|
// 2. Validate input
|
|
24
24
|
const validation = updateUserValidation.safeParse(input);
|
|
25
25
|
if (!validation.success) {
|
|
26
|
-
return Result.fail(new UserValidationError(validation.error.
|
|
26
|
+
return Result.fail(new UserValidationError(validation.error.issues[0].message));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// If the input contains email, check if it is free to use.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createImplementation","Result","IdentityContext","EventPublisher","UpdateUserUseCase","UseCaseAbstraction","AdminUsersRepository","updateUserValidation","NotAuthorizedError","EmailTakenError","UserValidationError","UserBeforeUpdateEvent","UserAfterUpdateEvent","UpdateUserUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","
|
|
1
|
+
{"version":3,"names":["createImplementation","Result","IdentityContext","EventPublisher","UpdateUserUseCase","UseCaseAbstraction","AdminUsersRepository","updateUserValidation","NotAuthorizedError","EmailTakenError","UserValidationError","UserBeforeUpdateEvent","UserAfterUpdateEvent","UpdateUserUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","issues","message","email","existingUserResult","get","isOk","value","getUserResult","isFail","originalUser","updateData","structuredClone","data","publish","user","updatedUser","result","update","ok","abstraction","implementation","dependencies"],"sources":["UpdateUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { UpdateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { updateUserValidation } from \"./schema.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\nimport { UserBeforeUpdateEvent, UserAfterUpdateEvent } from \"./events.js\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\n\nclass UpdateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: AdminUsersRepository.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateUserInput\n ): Promise<Result<AdminUser, UseCaseAbstraction.Error>> {\n // 1. Check permission\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // 2. Validate input\n const validation = updateUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.issues[0].message));\n }\n\n // If the input contains email, check if it is free to use.\n if (input.email) {\n const existingUserResult = await this.repository.get({ email: input.email });\n if (existingUserResult.isOk()) {\n if (existingUserResult.value.id !== id) {\n return Result.fail(new EmailTakenError(input.email));\n }\n }\n }\n // 3. Get existing user\n const getUserResult = await this.repository.get({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const originalUser = getUserResult.value;\n\n // 4. Clone update data for event modification\n const updateData = structuredClone(validation.data);\n\n // 5. Publish before event\n await this.eventPublisher.publish(\n new UserBeforeUpdateEvent({ user: originalUser, updateData, input: validation.data })\n );\n\n // 6. Merge updates with existing user\n const updatedUser: AdminUser = {\n ...originalUser,\n ...updateData\n };\n\n // 7. Update user via repository\n const result = await this.repository.update(updatedUser);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n // 8. Publish after event\n await this.eventPublisher.publish(\n new UserAfterUpdateEvent({\n originalUser,\n updatedUser: result.value,\n input: validation.data\n })\n );\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdateUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateUserUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, AdminUsersRepository]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ type UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRe
|
|
|
12
12
|
export interface IUpdateUser {
|
|
13
13
|
execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;
|
|
14
14
|
}
|
|
15
|
+
/** Update an existing admin user. */
|
|
15
16
|
export declare const UpdateUserUseCase: import("@webiny/di").Abstraction<IUpdateUser>;
|
|
16
17
|
export declare namespace UpdateUserUseCase {
|
|
17
18
|
type Interface = IUpdateUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","UpdateUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IUpdateUserErrors {\n notAuthorized: NotAuthorizedError;\n validation: UserValidationError;\n userExists: EmailTakenError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IUpdateUser {\n execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","UpdateUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IUpdateUserErrors {\n notAuthorized: NotAuthorizedError;\n validation: UserValidationError;\n userExists: EmailTakenError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IUpdateUser {\n execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;\n}\n\n/** Update an existing admin user. */\nexport const UpdateUserUseCase = createAbstraction<IUpdateUser>(\"UpdateUserUseCase\");\n\n// Namespace exports\nexport namespace UpdateUserUseCase {\n export type Interface = IUpdateUser;\n export type Error = UpdateUserError;\n}\n\n// Event payload types\nexport interface UserBeforeUpdatePayload {\n user: AdminUser;\n updateData: Partial<AdminUser>;\n input: UpdateUserInput;\n}\n\nexport interface UserAfterUpdatePayload {\n originalUser: AdminUser;\n updatedUser: AdminUser;\n input: UpdateUserInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAWvD;;AAOA;;AAGA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
|
|
@@ -5,8 +5,9 @@ export declare class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdateP
|
|
|
5
5
|
eventType: "user.beforeUpdate";
|
|
6
6
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserBeforeUpdateEvent>>;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
export declare
|
|
8
|
+
/** Hook into user lifecycle before a user is updated. */
|
|
9
|
+
export declare const UserBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeUpdateEvent>>;
|
|
10
|
+
export declare namespace UserBeforeUpdateEventHandler {
|
|
10
11
|
type Interface = IEventHandler<UserBeforeUpdateEvent>;
|
|
11
12
|
type Event = UserBeforeUpdateEvent;
|
|
12
13
|
}
|
|
@@ -14,8 +15,9 @@ export declare class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePay
|
|
|
14
15
|
eventType: "user.afterUpdate";
|
|
15
16
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserAfterUpdateEvent>>;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
export declare
|
|
18
|
+
/** Hook into user lifecycle after a user is updated. */
|
|
19
|
+
export declare const UserAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterUpdateEvent>>;
|
|
20
|
+
export declare namespace UserAfterUpdateEventHandler {
|
|
19
21
|
type Interface = IEventHandler<UserAfterUpdateEvent>;
|
|
20
22
|
type Event = UserAfterUpdateEvent;
|
|
21
23
|
}
|
|
@@ -4,17 +4,21 @@ import { DomainEvent } from "../../eventPublisher/index.js";
|
|
|
4
4
|
export class UserBeforeUpdateEvent extends DomainEvent {
|
|
5
5
|
eventType = "user.beforeUpdate";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return UserBeforeUpdateEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
/** Hook into user lifecycle before a user is updated. */
|
|
12
|
+
export const UserBeforeUpdateEventHandler = createAbstraction("UserBeforeUpdateEventHandler");
|
|
11
13
|
// After Update Event
|
|
12
14
|
export class UserAfterUpdateEvent extends DomainEvent {
|
|
13
15
|
eventType = "user.afterUpdate";
|
|
14
16
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
17
|
+
return UserAfterUpdateEventHandler;
|
|
16
18
|
}
|
|
17
19
|
}
|
|
18
|
-
|
|
20
|
+
|
|
21
|
+
/** Hook into user lifecycle after a user is updated. */
|
|
22
|
+
export const UserAfterUpdateEventHandler = createAbstraction("UserAfterUpdateEventHandler");
|
|
19
23
|
|
|
20
24
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeUpdateEvent","eventType","getHandlerAbstraction","
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeUpdateEvent","eventType","getHandlerAbstraction","UserBeforeUpdateEventHandler","UserAfterUpdateEvent","UserAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeUpdatePayload, UserAfterUpdatePayload } from \"./abstractions.js\";\n\n// Before Update Event\nexport class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdatePayload> {\n eventType = \"user.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeUpdateEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is updated. */\nexport const UserBeforeUpdateEventHandler = createAbstraction<IEventHandler<UserBeforeUpdateEvent>>(\n \"UserBeforeUpdateEventHandler\"\n);\n\nexport namespace UserBeforeUpdateEventHandler {\n export type Interface = IEventHandler<UserBeforeUpdateEvent>;\n export type Event = UserBeforeUpdateEvent;\n}\n\n// After Update Event\nexport class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePayload> {\n eventType = \"user.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterUpdateEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is updated. */\nexport const UserAfterUpdateEventHandler = createAbstraction<IEventHandler<UserAfterUpdateEvent>>(\n \"UserAfterUpdateEventHandler\"\n);\n\nexport namespace UserAfterUpdateEventHandler {\n export type Interface = IEventHandler<UserAfterUpdateEvent>;\n export type Event = UserAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -6,33 +6,7 @@ export declare const updateUserValidation: z.ZodObject<{
|
|
|
6
6
|
avatar: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
7
7
|
id: z.ZodString;
|
|
8
8
|
src: z.ZodString;
|
|
9
|
-
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
id: string;
|
|
14
|
-
src: string;
|
|
15
|
-
}>>>;
|
|
16
|
-
roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
17
|
-
teams: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
18
|
-
}, "strip", z.ZodTypeAny, {
|
|
19
|
-
firstName?: string | undefined;
|
|
20
|
-
lastName?: string | undefined;
|
|
21
|
-
displayName?: string | undefined;
|
|
22
|
-
roles?: string[] | undefined;
|
|
23
|
-
teams?: string[] | undefined;
|
|
24
|
-
avatar?: {
|
|
25
|
-
id: string;
|
|
26
|
-
src: string;
|
|
27
|
-
} | null | undefined;
|
|
28
|
-
}, {
|
|
29
|
-
firstName?: string | undefined;
|
|
30
|
-
lastName?: string | undefined;
|
|
31
|
-
displayName?: string | undefined;
|
|
32
|
-
roles?: string[] | undefined;
|
|
33
|
-
teams?: string[] | undefined;
|
|
34
|
-
avatar?: {
|
|
35
|
-
id: string;
|
|
36
|
-
src: string;
|
|
37
|
-
} | null | undefined;
|
|
38
|
-
}>;
|
|
9
|
+
}, z.core.$strip>>>;
|
|
10
|
+
roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
11
|
+
teams: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
12
|
+
}, z.core.$strip>;
|