@webiny/api-core 6.3.0 → 6.4.0-beta.1
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.js +22 -18
- package/ApiCoreFeature.js.map +1 -1
- package/createApiCore.d.ts +1 -1
- package/createApiCore.js +14 -9
- package/createApiCore.js.map +1 -1
- package/domain/identity/SystemIdentityValue.js +9 -8
- package/domain/identity/SystemIdentityValue.js.map +1 -1
- package/domain/security/ApiToken.js +5 -11
- package/domain/security/ApiToken.js.map +1 -1
- package/domain/tenancy/RootTenantValue.js +9 -8
- package/domain/tenancy/RootTenantValue.js.map +1 -1
- package/domain/tenancy/errors.js +0 -3
- package/exports/api/build-params.js +0 -3
- package/exports/api/event-publisher.js +0 -3
- package/exports/api/graphql.js +0 -2
- package/exports/api/key-value-store.js +0 -3
- package/exports/api/logger.js +0 -3
- package/exports/api/security/api-key.js +0 -2
- package/exports/api/security/authentication.js +0 -2
- package/exports/api/security/role.js +1 -3
- package/exports/api/security/user.js +0 -2
- package/exports/api/security.js +3 -7
- package/exports/api/system.js +0 -2
- package/exports/api/tasks.js +0 -2
- package/exports/api/tenancy.js +4 -6
- package/exports/api/webhooks.d.ts +1 -0
- package/exports/api/webhooks.js +1 -0
- package/exports/api.js +1 -3
- package/features/ai/Ai.js +100 -117
- package/features/ai/Ai.js.map +1 -1
- package/features/ai/AiSdkTools.js +23 -19
- package/features/ai/AiSdkTools.js.map +1 -1
- package/features/ai/AnthropicSdkFactory.js +82 -65
- package/features/ai/AnthropicSdkFactory.js.map +1 -1
- package/features/ai/OpenAiSdkFactory.js +234 -181
- package/features/ai/OpenAiSdkFactory.js.map +1 -1
- package/features/ai/abstractions.js +7 -32
- package/features/ai/abstractions.js.map +1 -1
- package/features/ai/feature.js +9 -8
- package/features/ai/feature.js.map +1 -1
- package/features/ai/index.js +1 -3
- package/features/buildParams/BuildParams.js +20 -14
- package/features/buildParams/BuildParams.js.map +1 -1
- package/features/buildParams/abstractions.js +3 -4
- package/features/buildParams/abstractions.js.map +1 -1
- package/features/buildParams/feature.js +6 -5
- package/features/buildParams/feature.js.map +1 -1
- package/features/buildParams/index.js +0 -2
- package/features/encryption/EncryptionService.js +50 -46
- package/features/encryption/EncryptionService.js.map +1 -1
- package/features/encryption/abstractions.js +2 -2
- package/features/encryption/abstractions.js.map +1 -1
- package/features/encryption/feature.js +6 -5
- package/features/encryption/feature.js.map +1 -1
- package/features/encryption/index.js +0 -2
- package/features/eventPublisher/EventPublisher.js +9 -15
- package/features/eventPublisher/EventPublisher.js.map +1 -1
- package/features/eventPublisher/__tests__/EventPublisher.test.js +385 -419
- package/features/eventPublisher/__tests__/EventPublisher.test.js.map +1 -1
- package/features/eventPublisher/abstractions.js +7 -12
- package/features/eventPublisher/abstractions.js.map +1 -1
- package/features/eventPublisher/feature.js +8 -7
- package/features/eventPublisher/feature.js.map +1 -1
- package/features/eventPublisher/index.js +0 -2
- package/features/featureFlags/FeatureFlags.js +15 -12
- package/features/featureFlags/FeatureFlags.js.map +1 -1
- package/features/featureFlags/abstractions.js +2 -1
- package/features/featureFlags/abstractions.js.map +1 -1
- package/features/featureFlags/feature.js +6 -5
- package/features/featureFlags/feature.js.map +1 -1
- package/features/keyValueStore/GlobalKeyValueStore.js +28 -23
- package/features/keyValueStore/GlobalKeyValueStore.js.map +1 -1
- package/features/keyValueStore/KeyValueStore.js +30 -27
- package/features/keyValueStore/KeyValueStore.js.map +1 -1
- package/features/keyValueStore/KeyValueStoreRepository.d.ts +2 -2
- package/features/keyValueStore/KeyValueStoreRepository.js +34 -41
- package/features/keyValueStore/KeyValueStoreRepository.js.map +1 -1
- package/features/keyValueStore/abstractions.d.ts +6 -2
- package/features/keyValueStore/abstractions.js +5 -20
- package/features/keyValueStore/abstractions.js.map +1 -1
- package/features/keyValueStore/errors.js +16 -17
- package/features/keyValueStore/errors.js.map +1 -1
- package/features/keyValueStore/feature.js +9 -9
- package/features/keyValueStore/feature.js.map +1 -1
- package/features/keyValueStore/index.js +1 -3
- package/features/logger/LoggerService.js +41 -45
- package/features/logger/LoggerService.js.map +1 -1
- package/features/logger/abstractions.js +2 -2
- package/features/logger/abstractions.js.map +1 -1
- package/features/logger/feature.js +6 -5
- package/features/logger/feature.js.map +1 -1
- package/features/logger/index.js +0 -2
- package/features/masker/Masker.js +11 -14
- package/features/masker/Masker.js.map +1 -1
- package/features/masker/abstractions.js +2 -1
- package/features/masker/abstractions.js.map +1 -1
- package/features/masker/feature.js +7 -6
- package/features/masker/feature.js.map +1 -1
- package/features/masker/index.js +0 -2
- package/features/security/IdentityContext/AnonymousIdentity.js +12 -16
- package/features/security/IdentityContext/AnonymousIdentity.js.map +1 -1
- package/features/security/IdentityContext/AuthenticatedIdentity.js +5 -8
- package/features/security/IdentityContext/AuthenticatedIdentity.js.map +1 -1
- package/features/security/IdentityContext/Identity.js +63 -71
- package/features/security/IdentityContext/Identity.js.map +1 -1
- package/features/security/IdentityContext/IdentityContext.js +69 -106
- package/features/security/IdentityContext/IdentityContext.js.map +1 -1
- package/features/security/IdentityContext/abstractions.js +2 -2
- package/features/security/IdentityContext/abstractions.js.map +1 -1
- package/features/security/IdentityContext/feature.js +6 -5
- package/features/security/IdentityContext/feature.js.map +1 -1
- package/features/security/IdentityContext/index.js +0 -3
- package/features/security/SecurityFeature.js +13 -21
- package/features/security/SecurityFeature.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +48 -49
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/abstractions.js +2 -2
- package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/events.js +17 -16
- package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/feature.js +6 -5
- package/features/security/apiKeys/CreateApiKey/feature.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/index.js +0 -2
- package/features/security/apiKeys/DeleteApiKey/DeleteApiKeyUseCase.js +29 -30
- package/features/security/apiKeys/DeleteApiKey/DeleteApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/abstractions.js +2 -2
- package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/events.js +17 -16
- package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/feature.js +6 -5
- package/features/security/apiKeys/DeleteApiKey/feature.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/index.js +0 -2
- package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.js +16 -14
- package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/GetApiKey/abstractions.js +2 -2
- package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKey/feature.js +6 -5
- package/features/security/apiKeys/GetApiKey/feature.js.map +1 -1
- package/features/security/apiKeys/GetApiKey/index.js +0 -2
- package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.js +13 -10
- package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +2 -2
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/feature.js +6 -5
- package/features/security/apiKeys/GetApiKeyBySlug/feature.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/index.js +0 -2
- package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.js +13 -10
- package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +2 -2
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/feature.js +6 -5
- package/features/security/apiKeys/GetApiKeyByToken/feature.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/index.js +0 -2
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +17 -17
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/abstractions.js +2 -2
- package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/feature.js +6 -5
- package/features/security/apiKeys/ListApiKeys/feature.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/index.js +0 -2
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +39 -42
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/abstractions.js +2 -2
- package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/events.js +17 -16
- package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/feature.js +6 -5
- package/features/security/apiKeys/UpdateApiKey/feature.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/index.js +0 -2
- package/features/security/apiKeys/feature.js +14 -16
- package/features/security/apiKeys/feature.js.map +1 -1
- package/features/security/apiKeys/shared/ApiKeyProvider.js +42 -42
- package/features/security/apiKeys/shared/ApiKeyProvider.js.map +1 -1
- package/features/security/apiKeys/shared/ApiKeysRepository.js +108 -135
- package/features/security/apiKeys/shared/ApiKeysRepository.js.map +1 -1
- package/features/security/apiKeys/shared/abstractions.js +4 -6
- package/features/security/apiKeys/shared/abstractions.js.map +1 -1
- package/features/security/apiKeys/shared/errors.js +29 -32
- package/features/security/apiKeys/shared/errors.js.map +1 -1
- package/features/security/apiKeys/shared/generateToken.js +6 -16
- package/features/security/apiKeys/shared/generateToken.js.map +1 -1
- package/features/security/apiKeys/shared/schemas.js +27 -23
- package/features/security/apiKeys/shared/schemas.js.map +1 -1
- package/features/security/apiKeys/shared/types.js +0 -3
- package/features/security/authentication/AuthenticationContext/AuthenticationContext.js +44 -38
- package/features/security/authentication/AuthenticationContext/AuthenticationContext.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js +33 -43
- package/features/security/authentication/AuthenticationContext/SetIdTokenCookie.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/abstractions.js +2 -2
- package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/errors.js +51 -116
- package/features/security/authentication/AuthenticationContext/errors.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/events.js +17 -16
- package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/feature.js +6 -5
- package/features/security/authentication/AuthenticationContext/feature.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/index.js +2 -4
- package/features/security/authentication/Authenticator/abstractions.js +2 -2
- package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
- package/features/security/authentication/Authenticator/index.js +0 -2
- package/features/security/authorization/AuthorizationContext/AuthorizationContext.js +46 -59
- package/features/security/authorization/AuthorizationContext/AuthorizationContext.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/abstractions.js +3 -4
- package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/feature.js +10 -9
- package/features/security/authorization/AuthorizationContext/feature.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/index.js +1 -4
- package/features/security/authorization/Authorizer/abstractions.js +2 -2
- package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
- package/features/security/authorization/Authorizer/index.js +0 -2
- package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js +60 -64
- package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js.map +1 -1
- package/features/security/authorization/GroupsTeamsAuthorizer/RolesTeamsAuthorizer.js +26 -40
- package/features/security/authorization/GroupsTeamsAuthorizer/RolesTeamsAuthorizer.js.map +1 -1
- package/features/security/authorization/GroupsTeamsAuthorizer/abstractions.js +2 -1
- package/features/security/authorization/GroupsTeamsAuthorizer/abstractions.js.map +1 -1
- package/features/security/authorization/GroupsTeamsAuthorizer/feature.js +7 -6
- package/features/security/authorization/GroupsTeamsAuthorizer/feature.js.map +1 -1
- package/features/security/login/abstractions.js +9 -8
- package/features/security/login/abstractions.js.map +1 -1
- package/features/security/login/index.js +0 -2
- package/features/security/permissions/createPermissionSchema.js +6 -5
- package/features/security/permissions/createPermissionSchema.js.map +1 -1
- package/features/security/permissions/createPermissions.js +148 -236
- package/features/security/permissions/createPermissions.js.map +1 -1
- package/features/security/permissions/index.js +0 -2
- package/features/security/permissions/types.js +0 -3
- package/features/security/roles/CreateRole/CreateRoleUseCase.js +53 -59
- package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
- package/features/security/roles/CreateRole/abstractions.js +2 -2
- package/features/security/roles/CreateRole/abstractions.js.map +1 -1
- package/features/security/roles/CreateRole/events.js +17 -16
- package/features/security/roles/CreateRole/events.js.map +1 -1
- package/features/security/roles/CreateRole/feature.js +6 -5
- package/features/security/roles/CreateRole/feature.js.map +1 -1
- package/features/security/roles/CreateRole/index.js +0 -2
- package/features/security/roles/CreateRole/schema.js +8 -7
- package/features/security/roles/CreateRole/schema.js.map +1 -1
- package/features/security/roles/DeleteRole/DeleteRoleUseCase.js +35 -41
- package/features/security/roles/DeleteRole/DeleteRoleUseCase.js.map +1 -1
- package/features/security/roles/DeleteRole/abstractions.js +2 -2
- package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
- package/features/security/roles/DeleteRole/events.js +17 -16
- package/features/security/roles/DeleteRole/events.js.map +1 -1
- package/features/security/roles/DeleteRole/feature.js +6 -5
- package/features/security/roles/DeleteRole/feature.js.map +1 -1
- package/features/security/roles/DeleteRole/index.js +0 -2
- package/features/security/roles/GetRole/GetRoleUseCase.js +19 -18
- package/features/security/roles/GetRole/GetRoleUseCase.js.map +1 -1
- package/features/security/roles/GetRole/abstractions.js +2 -2
- package/features/security/roles/GetRole/abstractions.js.map +1 -1
- package/features/security/roles/GetRole/feature.js +6 -5
- package/features/security/roles/GetRole/feature.js.map +1 -1
- package/features/security/roles/GetRole/index.js +0 -2
- package/features/security/roles/Installer/RolesInstaller.js +38 -35
- package/features/security/roles/Installer/RolesInstaller.js.map +1 -1
- package/features/security/roles/ListRoles/ListRolesUseCase.js +18 -17
- package/features/security/roles/ListRoles/ListRolesUseCase.js.map +1 -1
- package/features/security/roles/ListRoles/abstractions.js +2 -2
- package/features/security/roles/ListRoles/abstractions.js.map +1 -1
- package/features/security/roles/ListRoles/feature.js +6 -5
- package/features/security/roles/ListRoles/feature.js.map +1 -1
- package/features/security/roles/ListRoles/index.js +0 -2
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +43 -50
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
- package/features/security/roles/UpdateRole/abstractions.js +2 -2
- package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
- package/features/security/roles/UpdateRole/events.js +17 -16
- package/features/security/roles/UpdateRole/events.js.map +1 -1
- package/features/security/roles/UpdateRole/feature.js +6 -5
- package/features/security/roles/UpdateRole/feature.js.map +1 -1
- package/features/security/roles/UpdateRole/index.js +0 -2
- package/features/security/roles/UpdateRole/schema.js +7 -6
- package/features/security/roles/UpdateRole/schema.js.map +1 -1
- package/features/security/roles/feature.js +14 -18
- package/features/security/roles/feature.js.map +1 -1
- package/features/security/roles/shared/RoleProvider.js +27 -21
- package/features/security/roles/shared/RoleProvider.js.map +1 -1
- package/features/security/roles/shared/RolesRepository.js +96 -113
- package/features/security/roles/shared/RolesRepository.js.map +1 -1
- package/features/security/roles/shared/abstractions.js +3 -4
- package/features/security/roles/shared/abstractions.js.map +1 -1
- package/features/security/roles/shared/decorators/ListCache.js +23 -22
- package/features/security/roles/shared/decorators/ListCache.js.map +1 -1
- package/features/security/roles/shared/decorators/RolesRepositoryCachingDecorator.js +40 -62
- package/features/security/roles/shared/decorators/RolesRepositoryCachingDecorator.js.map +1 -1
- package/features/security/roles/shared/errors.js +50 -56
- package/features/security/roles/shared/errors.js.map +1 -1
- package/features/security/roles/shared/types.js +0 -3
- package/features/security/shared/abstractions.js +4 -6
- package/features/security/shared/abstractions.js.map +1 -1
- package/features/security/shared/errors.js +8 -8
- package/features/security/shared/errors.js.map +1 -1
- package/features/security/shared/index.js +0 -2
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js +53 -59
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
- package/features/security/teams/CreateTeam/abstractions.js +2 -2
- package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
- package/features/security/teams/CreateTeam/events.js +17 -16
- package/features/security/teams/CreateTeam/events.js.map +1 -1
- package/features/security/teams/CreateTeam/feature.js +6 -5
- package/features/security/teams/CreateTeam/feature.js.map +1 -1
- package/features/security/teams/CreateTeam/index.js +0 -2
- package/features/security/teams/CreateTeam/schema.js +6 -5
- package/features/security/teams/CreateTeam/schema.js.map +1 -1
- package/features/security/teams/DeleteTeam/DeleteTeamUseCase.js +36 -46
- package/features/security/teams/DeleteTeam/DeleteTeamUseCase.js.map +1 -1
- package/features/security/teams/DeleteTeam/abstractions.js +2 -2
- package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
- package/features/security/teams/DeleteTeam/events.js +17 -16
- package/features/security/teams/DeleteTeam/events.js.map +1 -1
- package/features/security/teams/DeleteTeam/feature.js +6 -5
- package/features/security/teams/DeleteTeam/feature.js.map +1 -1
- package/features/security/teams/DeleteTeam/index.js +0 -2
- package/features/security/teams/GetTeam/GetTeamUseCase.js +17 -17
- package/features/security/teams/GetTeam/GetTeamUseCase.js.map +1 -1
- package/features/security/teams/GetTeam/abstractions.js +2 -2
- package/features/security/teams/GetTeam/abstractions.js.map +1 -1
- package/features/security/teams/GetTeam/feature.js +6 -5
- package/features/security/teams/GetTeam/feature.js.map +1 -1
- package/features/security/teams/GetTeam/index.js +0 -2
- package/features/security/teams/ListTeams/ListTeamsUseCase.js +20 -21
- package/features/security/teams/ListTeams/ListTeamsUseCase.js.map +1 -1
- package/features/security/teams/ListTeams/abstractions.js +2 -2
- package/features/security/teams/ListTeams/abstractions.js.map +1 -1
- package/features/security/teams/ListTeams/feature.js +6 -5
- package/features/security/teams/ListTeams/feature.js.map +1 -1
- package/features/security/teams/ListTeams/index.js +0 -2
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +46 -58
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
- package/features/security/teams/UpdateTeam/abstractions.js +2 -2
- package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
- package/features/security/teams/UpdateTeam/events.js +17 -16
- package/features/security/teams/UpdateTeam/events.js.map +1 -1
- package/features/security/teams/UpdateTeam/feature.js +6 -5
- package/features/security/teams/UpdateTeam/feature.js.map +1 -1
- package/features/security/teams/UpdateTeam/index.js +0 -2
- package/features/security/teams/UpdateTeam/schema.js +5 -4
- package/features/security/teams/UpdateTeam/schema.js.map +1 -1
- package/features/security/teams/feature.js +13 -17
- package/features/security/teams/feature.js.map +1 -1
- package/features/security/teams/shared/TeamProvider.js +27 -21
- package/features/security/teams/shared/TeamProvider.js.map +1 -1
- package/features/security/teams/shared/TeamsRepository.js +100 -118
- package/features/security/teams/shared/TeamsRepository.js.map +1 -1
- package/features/security/teams/shared/abstractions.js +3 -4
- package/features/security/teams/shared/abstractions.js.map +1 -1
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +40 -62
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -1
- package/features/security/teams/shared/errors.js +62 -70
- package/features/security/teams/shared/errors.js.map +1 -1
- package/features/security/teams/shared/types.js +0 -3
- package/features/security/utils/AppPermissions.js +50 -89
- package/features/security/utils/AppPermissions.js.map +1 -1
- package/features/security/utils/IdentityValue.js +19 -22
- package/features/security/utils/IdentityValue.js.map +1 -1
- package/features/security/utils/filterOutCustomWbyAppsPermissions.js +24 -27
- package/features/security/utils/filterOutCustomWbyAppsPermissions.js.map +1 -1
- package/features/security/utils/getPermissionsFromRoles.js +5 -10
- package/features/security/utils/getPermissionsFromRoles.js.map +1 -1
- package/features/security/utils/isJwt.js +2 -1
- package/features/security/utils/isJwt.js.map +1 -1
- package/features/security/utils/verifyJwtUsingJwk.js +6 -7
- package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
- package/features/system/InstallSystem/InstallSystemUseCase.js +45 -44
- package/features/system/InstallSystem/InstallSystemUseCase.js.map +1 -1
- package/features/system/InstallSystem/abstractions.js +3 -17
- package/features/system/InstallSystem/abstractions.js.map +1 -1
- package/features/system/InstallSystem/errors.js +15 -16
- package/features/system/InstallSystem/errors.js.map +1 -1
- package/features/system/InstallSystem/events.js +8 -5
- package/features/system/InstallSystem/events.js.map +1 -1
- package/features/system/InstallSystem/feature.js +6 -7
- package/features/system/InstallSystem/feature.js.map +1 -1
- package/features/system/InstallSystem/index.js +2 -6
- package/features/system/SystemFeature.js +6 -5
- package/features/system/SystemFeature.js.map +1 -1
- package/features/task/TaskController/abstractions.js +2 -10
- package/features/task/TaskController/abstractions.js.map +1 -1
- package/features/task/TaskController/index.js +0 -2
- package/features/task/TaskDefinition/abstractions.js +8 -40
- package/features/task/TaskDefinition/abstractions.js.map +1 -1
- package/features/task/TaskDefinition/index.js +0 -2
- package/features/task/TaskService/abstractions.js +9 -13
- package/features/task/TaskService/abstractions.js.map +1 -1
- package/features/task/TaskService/index.js +0 -2
- package/features/tenancy/CreateTenant/CreateTenantGateway.js +14 -11
- package/features/tenancy/CreateTenant/CreateTenantGateway.js.map +1 -1
- package/features/tenancy/CreateTenant/CreateTenantRepository.js +18 -15
- package/features/tenancy/CreateTenant/CreateTenantRepository.js.map +1 -1
- package/features/tenancy/CreateTenant/CreateTenantUseCase.js +44 -41
- package/features/tenancy/CreateTenant/CreateTenantUseCase.js.map +1 -1
- package/features/tenancy/CreateTenant/abstractions.js +6 -29
- package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
- package/features/tenancy/CreateTenant/decorators/CreateTenantWithWcpIncrement.js +16 -15
- package/features/tenancy/CreateTenant/decorators/CreateTenantWithWcpIncrement.js.map +1 -1
- package/features/tenancy/CreateTenant/errors.js +8 -8
- package/features/tenancy/CreateTenant/errors.js.map +1 -1
- package/features/tenancy/CreateTenant/events.js +16 -11
- package/features/tenancy/CreateTenant/events.js.map +1 -1
- package/features/tenancy/CreateTenant/feature.js +9 -8
- package/features/tenancy/CreateTenant/feature.js.map +1 -1
- package/features/tenancy/CreateTenant/index.js +2 -4
- package/features/tenancy/DeleteTenant/DeleteTenantGateway.js +15 -12
- package/features/tenancy/DeleteTenant/DeleteTenantGateway.js.map +1 -1
- package/features/tenancy/DeleteTenant/DeleteTenantRepository.js +22 -19
- package/features/tenancy/DeleteTenant/DeleteTenantRepository.js.map +1 -1
- package/features/tenancy/DeleteTenant/DeleteTenantUseCase.js +29 -27
- package/features/tenancy/DeleteTenant/DeleteTenantUseCase.js.map +1 -1
- package/features/tenancy/DeleteTenant/abstractions.js +6 -10
- package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
- package/features/tenancy/DeleteTenant/decorators/DeleteTenantWithWcpDecrement.js +16 -13
- package/features/tenancy/DeleteTenant/decorators/DeleteTenantWithWcpDecrement.js.map +1 -1
- package/features/tenancy/DeleteTenant/events.js +16 -11
- package/features/tenancy/DeleteTenant/events.js.map +1 -1
- package/features/tenancy/DeleteTenant/feature.js +9 -8
- package/features/tenancy/DeleteTenant/feature.js.map +1 -1
- package/features/tenancy/DeleteTenant/index.js +2 -4
- package/features/tenancy/GetRootTenant/GetRootTenantUseCase.js +15 -12
- package/features/tenancy/GetRootTenant/GetRootTenantUseCase.js.map +1 -1
- package/features/tenancy/GetRootTenant/abstractions.js +2 -4
- package/features/tenancy/GetRootTenant/abstractions.js.map +1 -1
- package/features/tenancy/GetRootTenant/feature.js +6 -5
- package/features/tenancy/GetRootTenant/feature.js.map +1 -1
- package/features/tenancy/GetRootTenant/index.js +0 -2
- package/features/tenancy/GetTenantById/GetTenantByIdGateway.js +17 -12
- package/features/tenancy/GetTenantById/GetTenantByIdGateway.js.map +1 -1
- package/features/tenancy/GetTenantById/GetTenantByIdRepository.js +18 -19
- package/features/tenancy/GetTenantById/GetTenantByIdRepository.js.map +1 -1
- package/features/tenancy/GetTenantById/GetTenantByIdUseCase.js +17 -17
- package/features/tenancy/GetTenantById/GetTenantByIdUseCase.js.map +1 -1
- package/features/tenancy/GetTenantById/abstractions.js +4 -6
- package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
- package/features/tenancy/GetTenantById/feature.js +8 -12
- package/features/tenancy/GetTenantById/feature.js.map +1 -1
- package/features/tenancy/GetTenantById/index.js +1 -3
- package/features/tenancy/InstallTenant/DependencyResolver.js +53 -65
- package/features/tenancy/InstallTenant/DependencyResolver.js.map +1 -1
- package/features/tenancy/InstallTenant/InstallTenantUseCase.js +95 -113
- package/features/tenancy/InstallTenant/InstallTenantUseCase.js.map +1 -1
- package/features/tenancy/InstallTenant/abstractions.js +4 -15
- package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
- package/features/tenancy/InstallTenant/errors.js +15 -16
- package/features/tenancy/InstallTenant/errors.js.map +1 -1
- package/features/tenancy/InstallTenant/events.js +8 -5
- package/features/tenancy/InstallTenant/events.js.map +1 -1
- package/features/tenancy/InstallTenant/feature.js +6 -5
- package/features/tenancy/InstallTenant/feature.js.map +1 -1
- package/features/tenancy/InstallTenant/index.js +1 -3
- package/features/tenancy/ListTenants/ListTenantsGateway.js +14 -11
- package/features/tenancy/ListTenants/ListTenantsGateway.js.map +1 -1
- package/features/tenancy/ListTenants/ListTenantsRepository.js +14 -12
- package/features/tenancy/ListTenants/ListTenantsRepository.js.map +1 -1
- package/features/tenancy/ListTenants/ListTenantsUseCase.js +16 -14
- package/features/tenancy/ListTenants/ListTenantsUseCase.js.map +1 -1
- package/features/tenancy/ListTenants/abstractions.js +4 -12
- package/features/tenancy/ListTenants/abstractions.js.map +1 -1
- package/features/tenancy/ListTenants/feature.js +8 -7
- package/features/tenancy/ListTenants/feature.js.map +1 -1
- package/features/tenancy/ListTenants/index.js +1 -3
- package/features/tenancy/TenancyFeature.js +20 -26
- package/features/tenancy/TenancyFeature.js.map +1 -1
- package/features/tenancy/TenantContext/TenantContext.js +46 -48
- package/features/tenancy/TenantContext/TenantContext.js.map +1 -1
- package/features/tenancy/TenantContext/abstractions.js +2 -2
- package/features/tenancy/TenantContext/abstractions.js.map +1 -1
- package/features/tenancy/TenantContext/errors.js +7 -7
- package/features/tenancy/TenantContext/errors.js.map +1 -1
- package/features/tenancy/TenantContext/feature.js +6 -5
- package/features/tenancy/TenantContext/feature.js.map +1 -1
- package/features/tenancy/TenantContext/index.js +0 -2
- package/features/tenancy/UpdateTenant/UpdateTenantGateway.js +14 -11
- package/features/tenancy/UpdateTenant/UpdateTenantGateway.js.map +1 -1
- package/features/tenancy/UpdateTenant/UpdateTenantRepository.js +19 -16
- package/features/tenancy/UpdateTenant/UpdateTenantRepository.js.map +1 -1
- package/features/tenancy/UpdateTenant/UpdateTenantUseCase.js +37 -36
- package/features/tenancy/UpdateTenant/UpdateTenantUseCase.js.map +1 -1
- package/features/tenancy/UpdateTenant/abstractions.js +6 -10
- package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
- package/features/tenancy/UpdateTenant/events.js +16 -11
- package/features/tenancy/UpdateTenant/events.js.map +1 -1
- package/features/tenancy/UpdateTenant/feature.js +8 -7
- package/features/tenancy/UpdateTenant/feature.js.map +1 -1
- package/features/tenancy/UpdateTenant/index.js +2 -4
- package/features/tenancy/shared/TenantCache.js +18 -17
- package/features/tenancy/shared/TenantCache.js.map +1 -1
- package/features/tenancy/shared/abstractions.js +2 -1
- package/features/tenancy/shared/abstractions.js.map +1 -1
- package/features/tenancy/shared/storageOperations.js +2 -5
- package/features/tenancy/shared/storageOperations.js.map +1 -1
- package/features/users/AdminUsersFeature.js +15 -19
- package/features/users/AdminUsersFeature.js.map +1 -1
- package/features/users/CreateUser/CreateUserUseCase.js +65 -100
- package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
- package/features/users/CreateUser/abstractions.js +2 -13
- package/features/users/CreateUser/abstractions.js.map +1 -1
- package/features/users/CreateUser/decorators/CreateUserWithWcpIncrement.js +16 -15
- package/features/users/CreateUser/decorators/CreateUserWithWcpIncrement.js.map +1 -1
- package/features/users/CreateUser/events.js +17 -18
- package/features/users/CreateUser/events.js.map +1 -1
- package/features/users/CreateUser/feature.js +7 -6
- package/features/users/CreateUser/feature.js.map +1 -1
- package/features/users/CreateUser/index.js +0 -2
- package/features/users/CreateUser/schema.js +14 -18
- package/features/users/CreateUser/schema.js.map +1 -1
- package/features/users/DeleteUser/DeleteUserUseCase.js +35 -50
- package/features/users/DeleteUser/DeleteUserUseCase.js.map +1 -1
- package/features/users/DeleteUser/abstractions.js +2 -13
- package/features/users/DeleteUser/abstractions.js.map +1 -1
- package/features/users/DeleteUser/decorators/DeleteUserWithWcpDecrement.js +15 -16
- package/features/users/DeleteUser/decorators/DeleteUserWithWcpDecrement.js.map +1 -1
- package/features/users/DeleteUser/errors.js +7 -7
- package/features/users/DeleteUser/errors.js.map +1 -1
- package/features/users/DeleteUser/events.js +17 -18
- package/features/users/DeleteUser/events.js.map +1 -1
- package/features/users/DeleteUser/feature.js +7 -6
- package/features/users/DeleteUser/feature.js.map +1 -1
- package/features/users/DeleteUser/index.js +0 -2
- package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js +60 -74
- package/features/users/ExternalIdpUserSync/ExternalIdpUserSyncHandler.js.map +1 -1
- package/features/users/ExternalIdpUserSync/feature.js +6 -5
- package/features/users/ExternalIdpUserSync/feature.js.map +1 -1
- package/features/users/ExternalIdpUserSync/index.js +0 -2
- package/features/users/GetIdentityProfile/GetIdentityProfileUseCase.js +29 -39
- package/features/users/GetIdentityProfile/GetIdentityProfileUseCase.js.map +1 -1
- package/features/users/GetIdentityProfile/abstractions.js +2 -11
- package/features/users/GetIdentityProfile/abstractions.js.map +1 -1
- package/features/users/GetIdentityProfile/feature.js +6 -5
- package/features/users/GetIdentityProfile/feature.js.map +1 -1
- package/features/users/GetIdentityProfile/index.js +0 -2
- package/features/users/GetIdentityProfile/types.js +0 -3
- package/features/users/GetUser/GetUserUseCase.js +19 -23
- package/features/users/GetUser/GetUserUseCase.js.map +1 -1
- package/features/users/GetUser/abstractions.js +2 -11
- package/features/users/GetUser/abstractions.js.map +1 -1
- package/features/users/GetUser/feature.js +6 -5
- package/features/users/GetUser/feature.js.map +1 -1
- package/features/users/GetUser/index.js +0 -2
- package/features/users/ListUserTeams/ListUserTeamsUseCase.js +33 -42
- package/features/users/ListUserTeams/ListUserTeamsUseCase.js.map +1 -1
- package/features/users/ListUserTeams/abstractions.js +2 -11
- package/features/users/ListUserTeams/abstractions.js.map +1 -1
- package/features/users/ListUserTeams/feature.js +6 -5
- package/features/users/ListUserTeams/feature.js.map +1 -1
- package/features/users/ListUserTeams/index.js +0 -2
- package/features/users/ListUsers/ListUsersUseCase.js +19 -23
- package/features/users/ListUsers/ListUsersUseCase.js.map +1 -1
- package/features/users/ListUsers/abstractions.js +2 -11
- package/features/users/ListUsers/abstractions.js.map +1 -1
- package/features/users/ListUsers/feature.js +6 -5
- package/features/users/ListUsers/feature.js.map +1 -1
- package/features/users/ListUsers/index.js +0 -2
- package/features/users/UpdateUser/UpdateUserUseCase.js +52 -74
- package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
- package/features/users/UpdateUser/abstractions.js +2 -13
- package/features/users/UpdateUser/abstractions.js.map +1 -1
- package/features/users/UpdateUser/events.js +17 -18
- package/features/users/UpdateUser/events.js.map +1 -1
- package/features/users/UpdateUser/feature.js +6 -5
- package/features/users/UpdateUser/feature.js.map +1 -1
- package/features/users/UpdateUser/index.js +0 -2
- package/features/users/UpdateUser/schema.js +11 -10
- package/features/users/UpdateUser/schema.js.map +1 -1
- package/features/users/shared/AdminUsersRepository.js +104 -112
- package/features/users/shared/AdminUsersRepository.js.map +1 -1
- package/features/users/shared/abstractions.js +2 -9
- package/features/users/shared/abstractions.js.map +1 -1
- package/features/users/shared/errors.js +40 -46
- package/features/users/shared/errors.js.map +1 -1
- package/features/users/shared/loaders.js +52 -66
- package/features/users/shared/loaders.js.map +1 -1
- package/features/users/shared/storageAbstractions.js +2 -2
- package/features/users/shared/storageAbstractions.js.map +1 -1
- package/features/users/shared/types.js +0 -3
- package/features/wcp/WcpContext/WcpContext.js +138 -142
- package/features/wcp/WcpContext/WcpContext.js.map +1 -1
- package/features/wcp/WcpContext/abstractions.js +2 -6
- package/features/wcp/WcpContext/abstractions.js.map +1 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +135 -134
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
- package/features/wcp/WcpContext/feature.js +6 -5
- package/features/wcp/WcpContext/feature.js.map +1 -1
- package/features/wcp/WcpContext/index.js +0 -2
- package/features/wcp/WcpContext/types.js +0 -3
- package/features/wcp/WcpContext/utils.js +35 -53
- package/features/wcp/WcpContext/utils.js.map +1 -1
- package/features/wcp/WcpFeature.js +7 -6
- package/features/wcp/WcpFeature.js.map +1 -1
- package/features/webhooks/Webhook/WebhookProvider.d.ts +12 -0
- package/features/webhooks/Webhook/WebhookProvider.js +28 -0
- package/features/webhooks/Webhook/WebhookProvider.js.map +1 -0
- package/features/webhooks/Webhook/abstractions/WebhookFactory.d.ts +14 -0
- package/features/webhooks/Webhook/abstractions/WebhookFactory.js +5 -0
- package/features/webhooks/Webhook/abstractions/WebhookFactory.js.map +1 -0
- package/features/webhooks/Webhook/abstractions/WebhookProvider.d.ts +9 -0
- package/features/webhooks/Webhook/abstractions/WebhookProvider.js +5 -0
- package/features/webhooks/Webhook/abstractions/WebhookProvider.js.map +1 -0
- package/features/webhooks/Webhook/feature.d.ts +4 -0
- package/features/webhooks/Webhook/feature.js +11 -0
- package/features/webhooks/Webhook/feature.js.map +1 -0
- package/features/webhooks/Webhook/index.d.ts +2 -0
- package/features/webhooks/Webhook/index.js +2 -0
- package/features/webhooks/WebhookDispatcher/NullWebhookDispatcher.d.ts +8 -0
- package/features/webhooks/WebhookDispatcher/NullWebhookDispatcher.js +11 -0
- package/features/webhooks/WebhookDispatcher/NullWebhookDispatcher.js.map +1 -0
- package/features/webhooks/WebhookDispatcher/abstractions.d.ts +12 -0
- package/features/webhooks/WebhookDispatcher/abstractions.js +5 -0
- package/features/webhooks/WebhookDispatcher/abstractions.js.map +1 -0
- package/features/webhooks/WebhookSignPayload/abstractions.d.ts +14 -0
- package/features/webhooks/WebhookSignPayload/abstractions.js +5 -0
- package/features/webhooks/WebhookSignPayload/abstractions.js.map +1 -0
- package/features/webhooks/WebhookVerifyPayload/abstractions.d.ts +11 -0
- package/features/webhooks/WebhookVerifyPayload/abstractions.js +5 -0
- package/features/webhooks/WebhookVerifyPayload/abstractions.js.map +1 -0
- package/features/webhooks/index.d.ts +5 -0
- package/features/webhooks/index.js +5 -0
- package/graphql/security/NotAuthorizedResponse.js +11 -14
- package/graphql/security/NotAuthorizedResponse.js.map +1 -1
- package/graphql/security/ProfileMapper.js +12 -11
- package/graphql/security/ProfileMapper.js.map +1 -1
- package/graphql/security/apiKey.gql.js +38 -47
- package/graphql/security/apiKey.gql.js.map +1 -1
- package/graphql/security/base.gql.js +11 -10
- package/graphql/security/base.gql.js.map +1 -1
- package/graphql/security/identity.gql.js +87 -97
- package/graphql/security/identity.gql.js.map +1 -1
- package/graphql/security/index.js +13 -8
- package/graphql/security/index.js.map +1 -1
- package/graphql/security/role.gql.js +49 -57
- package/graphql/security/role.gql.js.map +1 -1
- package/graphql/security/team.gql.js +61 -69
- package/graphql/security/team.gql.js.map +1 -1
- package/graphql/system/createSystemGraphQL.js +31 -34
- package/graphql/system/createSystemGraphQL.js.map +1 -1
- package/graphql/users/user.gql.js +87 -105
- package/graphql/users/user.gql.js.map +1 -1
- package/graphql/wcp/graphql.js +25 -28
- package/graphql/wcp/graphql.js.map +1 -1
- package/idp/JwksCache.js +22 -28
- package/idp/JwksCache.js.map +1 -1
- package/idp/JwtAuthenticator.js +34 -46
- package/idp/JwtAuthenticator.js.map +1 -1
- package/idp/OidcJwtIdentityProvider.js +55 -82
- package/idp/OidcJwtIdentityProvider.js.map +1 -1
- package/idp/abstractions.js +5 -14
- package/idp/abstractions.js.map +1 -1
- package/idp/feature.js +8 -7
- package/idp/feature.js.map +1 -1
- package/idp/index.js +1 -3
- package/idp/types.js +0 -3
- package/index.js +0 -2
- package/legacy/security/LegacyContext.js +133 -186
- package/legacy/security/LegacyContext.js.map +1 -1
- package/legacy/security/createSecurityContext.js +5 -9
- package/legacy/security/createSecurityContext.js.map +1 -1
- package/legacy/security/plugins/apiKeyAuthentication.js +15 -24
- package/legacy/security/plugins/apiKeyAuthentication.js.map +1 -1
- package/legacy/security/plugins/apiKeyAuthorization.js +9 -18
- package/legacy/security/plugins/apiKeyAuthorization.js.map +1 -1
- package/legacy/security/plugins/authenticateUsingCookie.js +18 -22
- package/legacy/security/plugins/authenticateUsingCookie.js.map +1 -1
- package/legacy/security/plugins/authenticateUsingHttpHeader.d.ts +1 -1
- package/legacy/security/plugins/authenticateUsingHttpHeader.js +15 -18
- package/legacy/security/plugins/authenticateUsingHttpHeader.js.map +1 -1
- package/legacy/security/plugins/secureHeaders.js +28 -21
- package/legacy/security/plugins/secureHeaders.js.map +1 -1
- package/legacy/tenancy/LegacyContext.js +45 -52
- package/legacy/tenancy/LegacyContext.js.map +1 -1
- package/legacy/tenancy/createTenancyContext.js +22 -42
- package/legacy/tenancy/createTenancyContext.js.map +1 -1
- package/legacy/users/LegacyContext.js +39 -54
- package/legacy/users/LegacyContext.js.map +1 -1
- package/legacy/users/createAdminUsersContext.js +7 -7
- package/legacy/users/createAdminUsersContext.js.map +1 -1
- package/legacy/wcp/LegacyWcpContext.js +80 -79
- package/legacy/wcp/LegacyWcpContext.js.map +1 -1
- package/legacy/wcp/context.d.ts +1 -3
- package/legacy/wcp/context.js +33 -37
- package/legacy/wcp/context.js.map +1 -1
- package/models/base/BaseModel.js +51 -56
- package/models/base/BaseModel.js.map +1 -1
- package/models/base/ModelBuilder.js +65 -78
- package/models/base/ModelBuilder.js.map +1 -1
- package/models/base/ModelFactory.js +0 -3
- package/models/base/__tests__/ModelBuilder.test.js +437 -454
- package/models/base/__tests__/ModelBuilder.test.js.map +1 -1
- package/models/base/abstractions.js +0 -3
- package/models/cms/FieldBuilder.js +112 -121
- package/models/cms/FieldBuilder.js.map +1 -1
- package/models/cms/FieldBuilderRegistry.js +13 -12
- package/models/cms/FieldBuilderRegistry.js.map +1 -1
- package/models/cms/FieldDefinitionsBuilder.js +37 -54
- package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
- package/models/cms/PrivateCmsModelBuilder.js +84 -89
- package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
- package/models/cms/PrivatePage/Page.fields.js +7 -6
- package/models/cms/PrivatePage/Page.fields.js.map +1 -1
- package/models/cms/PrivatePage/PageModelBuilder.js +18 -15
- package/models/cms/PrivatePage/PageModelBuilder.js.map +1 -1
- package/models/cms/PrivatePage/PageModelFactory.js +20 -25
- package/models/cms/PrivatePage/PageModelFactory.js.map +1 -1
- package/models/cms/PrivatePage/__tests__/PageModelFactory.test.js +218 -234
- package/models/cms/PrivatePage/__tests__/PageModelFactory.test.js.map +1 -1
- package/models/cms/PrivatePage/__tests__/PagePublishingDecorator.js +33 -36
- package/models/cms/PrivatePage/__tests__/PagePublishingDecorator.js.map +1 -1
- package/models/cms/PrivatePage/__tests__/PageSeoDecorator.js +25 -26
- package/models/cms/PrivatePage/__tests__/PageSeoDecorator.js.map +1 -1
- package/models/cms/PrivatePage/abstractions.js +3 -9
- package/models/cms/PrivatePage/abstractions.js.map +1 -1
- package/models/cms/__tests__/PrivateCmsModelBuilder.test.js +173 -185
- package/models/cms/__tests__/PrivateCmsModelBuilder.test.js.map +1 -1
- package/models/cms/abstractions.js +3 -20
- package/models/cms/abstractions.js.map +1 -1
- package/models/cms/types.js +0 -3
- package/models/simple/Page/PageModelBuilder.js +15 -14
- package/models/simple/Page/PageModelBuilder.js.map +1 -1
- package/models/simple/Page/PageModelFactory.js +16 -15
- package/models/simple/Page/PageModelFactory.js.map +1 -1
- package/models/simple/Page/__tests__/PageModelBuilderDecorator.js +21 -20
- package/models/simple/Page/__tests__/PageModelBuilderDecorator.js.map +1 -1
- package/models/simple/Page/__tests__/PageModelBuilderDecorator2.js +17 -16
- package/models/simple/Page/__tests__/PageModelBuilderDecorator2.js.map +1 -1
- package/models/simple/Page/__tests__/PageModelFactory.test.js +28 -28
- package/models/simple/Page/__tests__/PageModelFactory.test.js.map +1 -1
- package/models/simple/Page/abstractions.js +9 -8
- package/models/simple/Page/abstractions.js.map +1 -1
- package/package.json +22 -22
- package/types/core.js +0 -3
- package/types/security.js +0 -3
- package/types/tenancy.js +0 -3
- package/types/users.js +0 -3
- package/domain/tenancy/errors.js.map +0 -1
- package/exports/api/build-params.js.map +0 -1
- package/exports/api/event-publisher.js.map +0 -1
- package/exports/api/graphql.js.map +0 -1
- package/exports/api/key-value-store.js.map +0 -1
- package/exports/api/logger.js.map +0 -1
- package/exports/api/security/api-key.js.map +0 -1
- package/exports/api/security/authentication.js.map +0 -1
- package/exports/api/security/role.js.map +0 -1
- package/exports/api/security/user.js.map +0 -1
- package/exports/api/security.js.map +0 -1
- package/exports/api/system.js.map +0 -1
- package/exports/api/tasks.js.map +0 -1
- package/exports/api/tenancy.js.map +0 -1
- package/exports/api.js.map +0 -1
- package/features/ai/index.js.map +0 -1
- package/features/buildParams/index.js.map +0 -1
- package/features/encryption/index.js.map +0 -1
- package/features/eventPublisher/index.js.map +0 -1
- package/features/keyValueStore/index.js.map +0 -1
- package/features/logger/index.js.map +0 -1
- package/features/masker/index.js.map +0 -1
- package/features/security/IdentityContext/index.js.map +0 -1
- package/features/security/apiKeys/CreateApiKey/index.js.map +0 -1
- package/features/security/apiKeys/DeleteApiKey/index.js.map +0 -1
- package/features/security/apiKeys/GetApiKey/index.js.map +0 -1
- package/features/security/apiKeys/GetApiKeyBySlug/index.js.map +0 -1
- package/features/security/apiKeys/GetApiKeyByToken/index.js.map +0 -1
- package/features/security/apiKeys/ListApiKeys/index.js.map +0 -1
- package/features/security/apiKeys/UpdateApiKey/index.js.map +0 -1
- package/features/security/apiKeys/shared/types.js.map +0 -1
- package/features/security/authentication/AuthenticationContext/index.js.map +0 -1
- package/features/security/authentication/Authenticator/index.js.map +0 -1
- package/features/security/authorization/AuthorizationContext/index.js.map +0 -1
- package/features/security/authorization/Authorizer/index.js.map +0 -1
- package/features/security/login/index.js.map +0 -1
- package/features/security/permissions/index.js.map +0 -1
- package/features/security/permissions/types.js.map +0 -1
- package/features/security/roles/CreateRole/index.js.map +0 -1
- package/features/security/roles/DeleteRole/index.js.map +0 -1
- package/features/security/roles/GetRole/index.js.map +0 -1
- package/features/security/roles/ListRoles/index.js.map +0 -1
- package/features/security/roles/UpdateRole/index.js.map +0 -1
- package/features/security/roles/shared/types.js.map +0 -1
- package/features/security/shared/index.js.map +0 -1
- package/features/security/teams/CreateTeam/index.js.map +0 -1
- package/features/security/teams/DeleteTeam/index.js.map +0 -1
- package/features/security/teams/GetTeam/index.js.map +0 -1
- package/features/security/teams/ListTeams/index.js.map +0 -1
- package/features/security/teams/UpdateTeam/index.js.map +0 -1
- package/features/security/teams/shared/types.js.map +0 -1
- package/features/system/InstallSystem/index.js.map +0 -1
- package/features/task/TaskController/index.js.map +0 -1
- package/features/task/TaskDefinition/index.js.map +0 -1
- package/features/task/TaskService/index.js.map +0 -1
- package/features/tenancy/CreateTenant/index.js.map +0 -1
- package/features/tenancy/DeleteTenant/index.js.map +0 -1
- package/features/tenancy/GetRootTenant/index.js.map +0 -1
- package/features/tenancy/GetTenantById/index.js.map +0 -1
- package/features/tenancy/InstallTenant/index.js.map +0 -1
- package/features/tenancy/ListTenants/index.js.map +0 -1
- package/features/tenancy/TenantContext/index.js.map +0 -1
- package/features/tenancy/UpdateTenant/index.js.map +0 -1
- package/features/users/CreateUser/index.js.map +0 -1
- package/features/users/DeleteUser/index.js.map +0 -1
- package/features/users/ExternalIdpUserSync/index.js.map +0 -1
- package/features/users/GetIdentityProfile/index.js.map +0 -1
- package/features/users/GetIdentityProfile/types.js.map +0 -1
- package/features/users/GetUser/index.js.map +0 -1
- package/features/users/ListUserTeams/index.js.map +0 -1
- package/features/users/ListUsers/index.js.map +0 -1
- package/features/users/UpdateUser/index.js.map +0 -1
- package/features/users/shared/types.js.map +0 -1
- package/features/wcp/WcpContext/index.js.map +0 -1
- package/features/wcp/WcpContext/types.js.map +0 -1
- package/idp/index.js.map +0 -1
- package/idp/types.js.map +0 -1
- package/index.js.map +0 -1
- package/models/base/ModelFactory.js.map +0 -1
- package/models/base/abstractions.js.map +0 -1
- package/models/cms/types.js.map +0 -1
- package/types/core.js.map +0 -1
- package/types/security.js.map +0 -1
- package/types/tenancy.js.map +0 -1
- package/types/users.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["describe","it","expect","beforeEach","Container","Abstraction","createImplementation","EventPublisherFeature","EventPublisher","EventPublisherAbstraction","PagePublishedEvent","eventType","constructor","payload","occurredAt","Date","getHandlerAbstraction","PagePublishedHandler","UserRegisteredEvent","UserRegisteredHandler","OrderPlacedEvent","OrderPlacedHandler","SendNotificationHandler","handledEvents","handle","event","push","console","log","title","SendNotificationHandlerImpl","abstraction","implementation","dependencies","UpdateSearchIndexHandler","pageId","UpdateSearchIndexHandlerImpl","LogPagePublishedHandler","publishedBy","LogPagePublishedHandlerImpl","SendWelcomeEmailHandler","email","SendWelcomeEmailHandlerImpl","CreateUserProfileHandler","userId","CreateUserProfileHandlerImpl","TrackUserRegistrationHandler","TrackUserRegistrationHandlerImpl","ProcessPaymentHandler","orderId","ProcessPaymentHandlerImpl","SendOrderConfirmationHandler","SendOrderConfirmationHandlerImpl","UpdateInventoryHandler","items","length","UpdateInventoryHandlerImpl","container","publisher","register","resolve","inSingletonScope","publishedAt","publish","handlers","resolveAll","toHaveLength","eventData","handler","handledEvent","toBe","event1","event2","resolves","not","toThrow","name","customerId","total","productId","quantity","orderData","pageEvent","userEvent","orderEvent","pageHandlers","userHandlers","orderHandlers","pageHandler","userHandler","FailingHandler","Error","FailingHandlerImpl","rejects"],"sources":["EventPublisher.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach } from \"vitest\";\nimport { Container, Abstraction, createImplementation } from \"@webiny/di\";\nimport { EventPublisherFeature } from \"../feature.js\";\nimport { EventPublisher as EventPublisherAbstraction } from \"../abstractions.js\";\nimport type { DomainEvent, IEventHandler } from \"../abstractions.js\";\n\n// ============================================================================\n// Test Event: PagePublished\n// ============================================================================\n\ninterface PagePublishedPayload {\n pageId: string;\n title: string;\n publishedBy: string;\n publishedAt: Date;\n}\n\nclass PagePublishedEvent implements DomainEvent<PagePublishedPayload> {\n eventType = \"page.published\" as const;\n occurredAt: Date;\n\n constructor(public payload: PagePublishedPayload) {\n this.occurredAt = new Date();\n }\n\n getHandlerAbstraction() {\n return PagePublishedHandler;\n }\n}\n\nexport const PagePublishedHandler = new Abstraction<IEventHandler<PagePublishedEvent>>(\n \"PagePublishedHandler\"\n);\n\n// ============================================================================\n// Test Event: UserRegistered\n// ============================================================================\n\ninterface UserRegisteredPayload {\n userId: string;\n email: string;\n name: string;\n}\n\nclass UserRegisteredEvent implements DomainEvent<UserRegisteredPayload> {\n eventType = \"user.registered\" as const;\n occurredAt: Date;\n\n constructor(public payload: UserRegisteredPayload) {\n this.occurredAt = new Date();\n }\n\n getHandlerAbstraction() {\n return UserRegisteredHandler;\n }\n}\n\nexport const UserRegisteredHandler = new Abstraction<IEventHandler<UserRegisteredEvent>>(\n \"UserRegisteredHandler\"\n);\n\n// ============================================================================\n// Test Event: OrderPlaced\n// ============================================================================\n\ninterface OrderPlacedPayload {\n orderId: string;\n customerId: string;\n total: number;\n items: Array<{ productId: string; quantity: number }>;\n}\n\nclass OrderPlacedEvent implements DomainEvent<OrderPlacedPayload> {\n eventType = \"order.placed\" as const;\n occurredAt: Date;\n\n constructor(public payload: OrderPlacedPayload) {\n this.occurredAt = new Date();\n }\n\n getHandlerAbstraction() {\n return OrderPlacedHandler;\n }\n}\n\nexport const OrderPlacedHandler = new Abstraction<IEventHandler<OrderPlacedEvent>>(\n \"OrderPlacedHandler\"\n);\n\n// ============================================================================\n// Handler Implementations for PagePublished\n// ============================================================================\n\nclass SendNotificationHandler implements IEventHandler<PagePublishedEvent> {\n public handledEvents: PagePublishedEvent[] = [];\n\n async handle(event: PagePublishedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📧 Sending notification for page: ${event.payload.title}`);\n }\n}\n\nexport const SendNotificationHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: SendNotificationHandler,\n dependencies: []\n});\n\nclass UpdateSearchIndexHandler implements IEventHandler<PagePublishedEvent> {\n public handledEvents: PagePublishedEvent[] = [];\n\n async handle(event: PagePublishedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`🔍 Updating search index for page: ${event.payload.pageId}`);\n }\n}\n\nexport const UpdateSearchIndexHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: UpdateSearchIndexHandler,\n dependencies: []\n});\n\nclass LogPagePublishedHandler implements IEventHandler<PagePublishedEvent> {\n public handledEvents: PagePublishedEvent[] = [];\n\n async handle(event: PagePublishedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(\n `📝 Logging: Page ${event.payload.pageId} published by ${event.payload.publishedBy}`\n );\n }\n}\n\nexport const LogPagePublishedHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: LogPagePublishedHandler,\n dependencies: []\n});\n\n// ============================================================================\n// Handler Implementations for UserRegistered\n// ============================================================================\n\nclass SendWelcomeEmailHandler implements IEventHandler<UserRegisteredEvent> {\n public handledEvents: UserRegisteredEvent[] = [];\n\n async handle(event: UserRegisteredEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`👋 Sending welcome email to: ${event.payload.email}`);\n }\n}\n\nexport const SendWelcomeEmailHandlerImpl = createImplementation({\n abstraction: UserRegisteredHandler,\n implementation: SendWelcomeEmailHandler,\n dependencies: []\n});\n\nclass CreateUserProfileHandler implements IEventHandler<UserRegisteredEvent> {\n public handledEvents: UserRegisteredEvent[] = [];\n\n async handle(event: UserRegisteredEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`👤 Creating profile for user: ${event.payload.userId}`);\n }\n}\n\nexport const CreateUserProfileHandlerImpl = createImplementation({\n abstraction: UserRegisteredHandler,\n implementation: CreateUserProfileHandler,\n dependencies: []\n});\n\nclass TrackUserRegistrationHandler implements IEventHandler<UserRegisteredEvent> {\n public handledEvents: UserRegisteredEvent[] = [];\n\n async handle(event: UserRegisteredEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📊 Tracking registration analytics for: ${event.payload.userId}`);\n }\n}\n\nexport const TrackUserRegistrationHandlerImpl = createImplementation({\n abstraction: UserRegisteredHandler,\n implementation: TrackUserRegistrationHandler,\n dependencies: []\n});\n\n// ============================================================================\n// Handler Implementations for OrderPlaced\n// ============================================================================\n\nclass ProcessPaymentHandler implements IEventHandler<OrderPlacedEvent> {\n public handledEvents: OrderPlacedEvent[] = [];\n\n async handle(event: OrderPlacedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`💳 Processing payment for order: ${event.payload.orderId}`);\n }\n}\n\nexport const ProcessPaymentHandlerImpl = createImplementation({\n abstraction: OrderPlacedHandler,\n implementation: ProcessPaymentHandler,\n dependencies: []\n});\n\nclass SendOrderConfirmationHandler implements IEventHandler<OrderPlacedEvent> {\n public handledEvents: OrderPlacedEvent[] = [];\n\n async handle(event: OrderPlacedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📧 Sending order confirmation for: ${event.payload.orderId}`);\n }\n}\n\nexport const SendOrderConfirmationHandlerImpl = createImplementation({\n abstraction: OrderPlacedHandler,\n implementation: SendOrderConfirmationHandler,\n dependencies: []\n});\n\nclass UpdateInventoryHandler implements IEventHandler<OrderPlacedEvent> {\n public handledEvents: OrderPlacedEvent[] = [];\n\n async handle(event: OrderPlacedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📦 Updating inventory for ${event.payload.items.length} items`);\n }\n}\n\nexport const UpdateInventoryHandlerImpl = createImplementation({\n abstraction: OrderPlacedHandler,\n implementation: UpdateInventoryHandler,\n dependencies: []\n});\n\n// ============================================================================\n// Tests\n// ============================================================================\n\ndescribe(\"EventPublisher\", () => {\n let container: Container;\n let publisher: EventPublisherAbstraction.Interface;\n\n beforeEach(() => {\n container = new Container();\n\n // ✅ Register EventPublisher using the feature\n EventPublisherFeature.register(container);\n\n publisher = container.resolve(EventPublisherAbstraction);\n });\n\n describe(\"PagePublished Event\", () => {\n it(\"should execute all registered PagePublished handlers\", async () => {\n // Register handlers\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n container.register(UpdateSearchIndexHandlerImpl).inSingletonScope();\n container.register(LogPagePublishedHandlerImpl).inSingletonScope();\n\n // Create and publish event\n const event = new PagePublishedEvent({\n pageId: \"page-123\",\n title: \"Getting Started with TypeScript\",\n publishedBy: \"user-456\",\n publishedAt: new Date()\n });\n\n await publisher.publish(event);\n\n // Verify all handlers were called\n const handlers = container.resolveAll(PagePublishedHandler);\n expect(handlers).toHaveLength(3);\n\n expect((handlers[0] as SendNotificationHandler).handledEvents).toHaveLength(1);\n expect((handlers[1] as UpdateSearchIndexHandler).handledEvents).toHaveLength(1);\n expect((handlers[2] as LogPagePublishedHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should pass correct event data to handlers\", async () => {\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n\n const eventData = {\n pageId: \"page-789\",\n title: \"Advanced Patterns\",\n publishedBy: \"admin-001\",\n publishedAt: new Date(\"2024-01-15\")\n };\n\n const event = new PagePublishedEvent(eventData);\n await publisher.publish(event);\n\n const handler = container.resolve(PagePublishedHandler) as SendNotificationHandler;\n const handledEvent = handler.handledEvents[0];\n\n expect(handledEvent.payload.pageId).toBe(eventData.pageId);\n expect(handledEvent.payload.title).toBe(eventData.title);\n expect(handledEvent.payload.publishedBy).toBe(eventData.publishedBy);\n expect(handledEvent.eventType).toBe(\"page.published\");\n });\n\n it(\"should handle multiple events sequentially\", async () => {\n container.register(LogPagePublishedHandlerImpl).inSingletonScope();\n\n const event1 = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"First Page\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n const event2 = new PagePublishedEvent({\n pageId: \"page-2\",\n title: \"Second Page\",\n publishedBy: \"user-2\",\n publishedAt: new Date()\n });\n\n await publisher.publish(event1);\n await publisher.publish(event2);\n\n const handler = container.resolve(PagePublishedHandler) as LogPagePublishedHandler;\n expect(handler.handledEvents).toHaveLength(2);\n expect(handler.handledEvents[0].payload.pageId).toBe(\"page-1\");\n expect(handler.handledEvents[1].payload.pageId).toBe(\"page-2\");\n });\n\n it(\"should work with no handlers registered\", async () => {\n const event = new PagePublishedEvent({\n pageId: \"page-999\",\n title: \"Orphan Page\",\n publishedBy: \"user-999\",\n publishedAt: new Date()\n });\n\n // Should not throw\n await expect(publisher.publish(event)).resolves.not.toThrow();\n });\n });\n\n describe(\"UserRegistered Event\", () => {\n it(\"should execute all registered UserRegistered handlers\", async () => {\n container.register(SendWelcomeEmailHandlerImpl).inSingletonScope();\n container.register(CreateUserProfileHandlerImpl).inSingletonScope();\n container.register(TrackUserRegistrationHandlerImpl).inSingletonScope();\n\n const event = new UserRegisteredEvent({\n userId: \"user-123\",\n email: \"john@example.com\",\n name: \"John Doe\"\n });\n\n await publisher.publish(event);\n\n const handlers = container.resolveAll(UserRegisteredHandler);\n expect(handlers).toHaveLength(3);\n\n expect((handlers[0] as SendWelcomeEmailHandler).handledEvents).toHaveLength(1);\n expect((handlers[1] as CreateUserProfileHandler).handledEvents).toHaveLength(1);\n expect((handlers[2] as TrackUserRegistrationHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should pass correct user data to handlers\", async () => {\n container.register(CreateUserProfileHandlerImpl).inSingletonScope();\n\n const event = new UserRegisteredEvent({\n userId: \"user-456\",\n email: \"jane@example.com\",\n name: \"Jane Smith\"\n });\n\n await publisher.publish(event);\n\n const handler = container.resolve(UserRegisteredHandler) as CreateUserProfileHandler;\n const handledEvent = handler.handledEvents[0];\n\n expect(handledEvent.payload.userId).toBe(\"user-456\");\n expect(handledEvent.payload.email).toBe(\"jane@example.com\");\n expect(handledEvent.payload.name).toBe(\"Jane Smith\");\n expect(handledEvent.eventType).toBe(\"user.registered\");\n });\n });\n\n describe(\"OrderPlaced Event\", () => {\n it(\"should execute all registered OrderPlaced handlers\", async () => {\n container.register(ProcessPaymentHandlerImpl).inSingletonScope();\n container.register(SendOrderConfirmationHandlerImpl).inSingletonScope();\n container.register(UpdateInventoryHandlerImpl).inSingletonScope();\n\n const event = new OrderPlacedEvent({\n orderId: \"order-123\",\n customerId: \"customer-456\",\n total: 99.99,\n items: [\n { productId: \"prod-1\", quantity: 2 },\n { productId: \"prod-2\", quantity: 1 }\n ]\n });\n\n await publisher.publish(event);\n\n const handlers = container.resolveAll(OrderPlacedHandler);\n expect(handlers).toHaveLength(3);\n\n expect((handlers[0] as ProcessPaymentHandler).handledEvents).toHaveLength(1);\n expect((handlers[1] as SendOrderConfirmationHandler).handledEvents).toHaveLength(1);\n expect((handlers[2] as UpdateInventoryHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should pass correct order data to handlers\", async () => {\n container.register(UpdateInventoryHandlerImpl).inSingletonScope();\n\n const orderData = {\n orderId: \"order-789\",\n customerId: \"customer-123\",\n total: 249.99,\n items: [\n { productId: \"prod-10\", quantity: 1 },\n { productId: \"prod-20\", quantity: 3 }\n ]\n };\n\n const event = new OrderPlacedEvent(orderData);\n await publisher.publish(event);\n\n const handler = container.resolve(OrderPlacedHandler) as UpdateInventoryHandler;\n const handledEvent = handler.handledEvents[0];\n\n expect(handledEvent.payload.orderId).toBe(orderData.orderId);\n expect(handledEvent.payload.total).toBe(orderData.total);\n expect(handledEvent.payload.items).toHaveLength(2);\n expect(handledEvent.eventType).toBe(\"order.placed\");\n });\n });\n\n describe(\"Mixed Events\", () => {\n it(\"should handle different event types independently\", async () => {\n // Register handlers for different events\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n container.register(SendWelcomeEmailHandlerImpl).inSingletonScope();\n container.register(ProcessPaymentHandlerImpl).inSingletonScope();\n\n // Publish different events\n const pageEvent = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test Page\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n const userEvent = new UserRegisteredEvent({\n userId: \"user-2\",\n email: \"test@example.com\",\n name: \"Test User\"\n });\n\n const orderEvent = new OrderPlacedEvent({\n orderId: \"order-1\",\n customerId: \"customer-1\",\n total: 50.0,\n items: [{ productId: \"prod-1\", quantity: 1 }]\n });\n\n await publisher.publish(pageEvent);\n await publisher.publish(userEvent);\n await publisher.publish(orderEvent);\n\n // Verify each handler only received its event type\n const pageHandlers = container.resolveAll(PagePublishedHandler);\n const userHandlers = container.resolveAll(UserRegisteredHandler);\n const orderHandlers = container.resolveAll(OrderPlacedHandler);\n\n expect((pageHandlers[0] as SendNotificationHandler).handledEvents).toHaveLength(1);\n expect((userHandlers[0] as SendWelcomeEmailHandler).handledEvents).toHaveLength(1);\n expect((orderHandlers[0] as ProcessPaymentHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should maintain event isolation between types\", async () => {\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n container.register(SendWelcomeEmailHandlerImpl).inSingletonScope();\n\n const pageEvent = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n const userEvent = new UserRegisteredEvent({\n userId: \"user-1\",\n email: \"test@test.com\",\n name: \"Test\"\n });\n\n await publisher.publish(pageEvent);\n await publisher.publish(userEvent);\n\n const pageHandler = container.resolve(PagePublishedHandler) as SendNotificationHandler;\n const userHandler = container.resolve(UserRegisteredHandler) as SendWelcomeEmailHandler;\n\n // Page handler should only have page events\n expect(pageHandler.handledEvents).toHaveLength(1);\n expect(pageHandler.handledEvents[0].eventType).toBe(\"page.published\");\n\n // User handler should only have user events\n expect(userHandler.handledEvents).toHaveLength(1);\n expect(userHandler.handledEvents[0].eventType).toBe(\"user.registered\");\n });\n });\n\n describe(\"Error Handling\", () => {\n it(\"should handle handler errors gracefully\", async () => {\n class FailingHandler implements IEventHandler<PagePublishedEvent> {\n async handle(): Promise<void> {\n throw new Error(\"Handler failed!\");\n }\n }\n\n const FailingHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: FailingHandler,\n dependencies: []\n });\n\n container.register(FailingHandlerImpl);\n\n const event = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n // Should throw the handler error\n await expect(publisher.publish(event)).rejects.toThrow(\"Handler failed!\");\n });\n });\n\n describe(\"Handler Registration\", () => {\n it(\"should support dynamic handler registration\", async () => {\n const event = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n // No handlers yet\n await publisher.publish(event);\n\n let handlers = container.resolveAll(PagePublishedHandler);\n expect(handlers).toHaveLength(0);\n\n // Register handler\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n\n // Now handler should execute\n await publisher.publish(event);\n\n handlers = container.resolveAll(PagePublishedHandler);\n expect(handlers).toHaveLength(1);\n expect((handlers[0] as SendNotificationHandler).handledEvents).toHaveLength(1);\n });\n });\n});\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,EAAEC,UAAU,QAAQ,QAAQ;AACzD,SAASC,SAAS,EAAEC,WAAW,EAAEC,oBAAoB,QAAQ,YAAY;AACzE,SAASC,qBAAqB;AAC9B,SAASC,cAAc,IAAIC,yBAAyB;;AAGpD;AACA;AACA;;AASA,MAAMC,kBAAkB,CAA8C;EAClEC,SAAS,GAAG,gBAAgB;EAG5BC,WAAWA,CAAQC,OAA6B,EAAE;IAAA,KAA/BA,OAA6B,GAA7BA,OAA6B;IAC5C,IAAI,CAACC,UAAU,GAAG,IAAIC,IAAI,CAAC,CAAC;EAChC;EAEAC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,oBAAoB;EAC/B;AACJ;AAEA,OAAO,MAAMA,oBAAoB,GAAG,IAAIZ,WAAW,CAC/C,sBACJ,CAAC;;AAED;AACA;AACA;;AAQA,MAAMa,mBAAmB,CAA+C;EACpEP,SAAS,GAAG,iBAAiB;EAG7BC,WAAWA,CAAQC,OAA8B,EAAE;IAAA,KAAhCA,OAA8B,GAA9BA,OAA8B;IAC7C,IAAI,CAACC,UAAU,GAAG,IAAIC,IAAI,CAAC,CAAC;EAChC;EAEAC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,qBAAqB;EAChC;AACJ;AAEA,OAAO,MAAMA,qBAAqB,GAAG,IAAId,WAAW,CAChD,uBACJ,CAAC;;AAED;AACA;AACA;;AASA,MAAMe,gBAAgB,CAA4C;EAC9DT,SAAS,GAAG,cAAc;EAG1BC,WAAWA,CAAQC,OAA2B,EAAE;IAAA,KAA7BA,OAA2B,GAA3BA,OAA2B;IAC1C,IAAI,CAACC,UAAU,GAAG,IAAIC,IAAI,CAAC,CAAC;EAChC;EAEAC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,kBAAkB;EAC7B;AACJ;AAEA,OAAO,MAAMA,kBAAkB,GAAG,IAAIhB,WAAW,CAC7C,oBACJ,CAAC;;AAED;AACA;AACA;;AAEA,MAAMiB,uBAAuB,CAA8C;EAChEC,aAAa,GAAyB,EAAE;EAE/C,MAAMC,MAAMA,CAACC,KAAyB,EAAiB;IACnD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,qCAAqCH,KAAK,CAACZ,OAAO,CAACgB,KAAK,EAAE,CAAC;EAC3E;AACJ;AAEA,OAAO,MAAMC,2BAA2B,GAAGxB,oBAAoB,CAAC;EAC5DyB,WAAW,EAAEd,oBAAoB;EACjCe,cAAc,EAAEV,uBAAuB;EACvCW,YAAY,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMC,wBAAwB,CAA8C;EACjEX,aAAa,GAAyB,EAAE;EAE/C,MAAMC,MAAMA,CAACC,KAAyB,EAAiB;IACnD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,sCAAsCH,KAAK,CAACZ,OAAO,CAACsB,MAAM,EAAE,CAAC;EAC7E;AACJ;AAEA,OAAO,MAAMC,4BAA4B,GAAG9B,oBAAoB,CAAC;EAC7DyB,WAAW,EAAEd,oBAAoB;EACjCe,cAAc,EAAEE,wBAAwB;EACxCD,YAAY,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMI,uBAAuB,CAA8C;EAChEd,aAAa,GAAyB,EAAE;EAE/C,MAAMC,MAAMA,CAACC,KAAyB,EAAiB;IACnD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CACP,oBAAoBH,KAAK,CAACZ,OAAO,CAACsB,MAAM,iBAAiBV,KAAK,CAACZ,OAAO,CAACyB,WAAW,EACtF,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,2BAA2B,GAAGjC,oBAAoB,CAAC;EAC5DyB,WAAW,EAAEd,oBAAoB;EACjCe,cAAc,EAAEK,uBAAuB;EACvCJ,YAAY,EAAE;AAClB,CAAC,CAAC;;AAEF;AACA;AACA;;AAEA,MAAMO,uBAAuB,CAA+C;EACjEjB,aAAa,GAA0B,EAAE;EAEhD,MAAMC,MAAMA,CAACC,KAA0B,EAAiB;IACpD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,gCAAgCH,KAAK,CAACZ,OAAO,CAAC4B,KAAK,EAAE,CAAC;EACtE;AACJ;AAEA,OAAO,MAAMC,2BAA2B,GAAGpC,oBAAoB,CAAC;EAC5DyB,WAAW,EAAEZ,qBAAqB;EAClCa,cAAc,EAAEQ,uBAAuB;EACvCP,YAAY,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMU,wBAAwB,CAA+C;EAClEpB,aAAa,GAA0B,EAAE;EAEhD,MAAMC,MAAMA,CAACC,KAA0B,EAAiB;IACpD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,iCAAiCH,KAAK,CAACZ,OAAO,CAAC+B,MAAM,EAAE,CAAC;EACxE;AACJ;AAEA,OAAO,MAAMC,4BAA4B,GAAGvC,oBAAoB,CAAC;EAC7DyB,WAAW,EAAEZ,qBAAqB;EAClCa,cAAc,EAAEW,wBAAwB;EACxCV,YAAY,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMa,4BAA4B,CAA+C;EACtEvB,aAAa,GAA0B,EAAE;EAEhD,MAAMC,MAAMA,CAACC,KAA0B,EAAiB;IACpD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,2CAA2CH,KAAK,CAACZ,OAAO,CAAC+B,MAAM,EAAE,CAAC;EAClF;AACJ;AAEA,OAAO,MAAMG,gCAAgC,GAAGzC,oBAAoB,CAAC;EACjEyB,WAAW,EAAEZ,qBAAqB;EAClCa,cAAc,EAAEc,4BAA4B;EAC5Cb,YAAY,EAAE;AAClB,CAAC,CAAC;;AAEF;AACA;AACA;;AAEA,MAAMe,qBAAqB,CAA4C;EAC5DzB,aAAa,GAAuB,EAAE;EAE7C,MAAMC,MAAMA,CAACC,KAAuB,EAAiB;IACjD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,oCAAoCH,KAAK,CAACZ,OAAO,CAACoC,OAAO,EAAE,CAAC;EAC5E;AACJ;AAEA,OAAO,MAAMC,yBAAyB,GAAG5C,oBAAoB,CAAC;EAC1DyB,WAAW,EAAEV,kBAAkB;EAC/BW,cAAc,EAAEgB,qBAAqB;EACrCf,YAAY,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMkB,4BAA4B,CAA4C;EACnE5B,aAAa,GAAuB,EAAE;EAE7C,MAAMC,MAAMA,CAACC,KAAuB,EAAiB;IACjD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,sCAAsCH,KAAK,CAACZ,OAAO,CAACoC,OAAO,EAAE,CAAC;EAC9E;AACJ;AAEA,OAAO,MAAMG,gCAAgC,GAAG9C,oBAAoB,CAAC;EACjEyB,WAAW,EAAEV,kBAAkB;EAC/BW,cAAc,EAAEmB,4BAA4B;EAC5ClB,YAAY,EAAE;AAClB,CAAC,CAAC;AAEF,MAAMoB,sBAAsB,CAA4C;EAC7D9B,aAAa,GAAuB,EAAE;EAE7C,MAAMC,MAAMA,CAACC,KAAuB,EAAiB;IACjD,IAAI,CAACF,aAAa,CAACG,IAAI,CAACD,KAAK,CAAC;IAC9BE,OAAO,CAACC,GAAG,CAAC,6BAA6BH,KAAK,CAACZ,OAAO,CAACyC,KAAK,CAACC,MAAM,QAAQ,CAAC;EAChF;AACJ;AAEA,OAAO,MAAMC,0BAA0B,GAAGlD,oBAAoB,CAAC;EAC3DyB,WAAW,EAAEV,kBAAkB;EAC/BW,cAAc,EAAEqB,sBAAsB;EACtCpB,YAAY,EAAE;AAClB,CAAC,CAAC;;AAEF;AACA;AACA;;AAEAjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;EAC7B,IAAIyD,SAAoB;EACxB,IAAIC,SAA8C;EAElDvD,UAAU,CAAC,MAAM;IACbsD,SAAS,GAAG,IAAIrD,SAAS,CAAC,CAAC;;IAE3B;IACAG,qBAAqB,CAACoD,QAAQ,CAACF,SAAS,CAAC;IAEzCC,SAAS,GAAGD,SAAS,CAACG,OAAO,CAACnD,yBAAyB,CAAC;EAC5D,CAAC,CAAC;EAEFT,QAAQ,CAAC,qBAAqB,EAAE,MAAM;IAClCC,EAAE,CAAC,sDAAsD,EAAE,YAAY;MACnE;MACAwD,SAAS,CAACE,QAAQ,CAAC7B,2BAA2B,CAAC,CAAC+B,gBAAgB,CAAC,CAAC;MAClEJ,SAAS,CAACE,QAAQ,CAACvB,4BAA4B,CAAC,CAACyB,gBAAgB,CAAC,CAAC;MACnEJ,SAAS,CAACE,QAAQ,CAACpB,2BAA2B,CAAC,CAACsB,gBAAgB,CAAC,CAAC;;MAElE;MACA,MAAMpC,KAAK,GAAG,IAAIf,kBAAkB,CAAC;QACjCyB,MAAM,EAAE,UAAU;QAClBN,KAAK,EAAE,iCAAiC;QACxCS,WAAW,EAAE,UAAU;QACvBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;MAEF,MAAM2C,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;;MAE9B;MACA,MAAMuC,QAAQ,GAAGP,SAAS,CAACQ,UAAU,CAAChD,oBAAoB,CAAC;MAC3Df,MAAM,CAAC8D,QAAQ,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;MAEhChE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA6BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAC9EhE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA8BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAC/EhE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA6BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC;IAEFjE,EAAE,CAAC,4CAA4C,EAAE,YAAY;MACzDwD,SAAS,CAACE,QAAQ,CAAC7B,2BAA2B,CAAC,CAAC+B,gBAAgB,CAAC,CAAC;MAElE,MAAMM,SAAS,GAAG;QACdhC,MAAM,EAAE,UAAU;QAClBN,KAAK,EAAE,mBAAmB;QAC1BS,WAAW,EAAE,WAAW;QACxBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC,YAAY;MACtC,CAAC;MAED,MAAMU,KAAK,GAAG,IAAIf,kBAAkB,CAACyD,SAAS,CAAC;MAC/C,MAAMT,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;MAE9B,MAAM2C,OAAO,GAAGX,SAAS,CAACG,OAAO,CAAC3C,oBAAoB,CAA4B;MAClF,MAAMoD,YAAY,GAAGD,OAAO,CAAC7C,aAAa,CAAC,CAAC,CAAC;MAE7CrB,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAACsB,MAAM,CAAC,CAACmC,IAAI,CAACH,SAAS,CAAChC,MAAM,CAAC;MAC1DjC,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAACgB,KAAK,CAAC,CAACyC,IAAI,CAACH,SAAS,CAACtC,KAAK,CAAC;MACxD3B,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAACyB,WAAW,CAAC,CAACgC,IAAI,CAACH,SAAS,CAAC7B,WAAW,CAAC;MACpEpC,MAAM,CAACmE,YAAY,CAAC1D,SAAS,CAAC,CAAC2D,IAAI,CAAC,gBAAgB,CAAC;IACzD,CAAC,CAAC;IAEFrE,EAAE,CAAC,4CAA4C,EAAE,YAAY;MACzDwD,SAAS,CAACE,QAAQ,CAACpB,2BAA2B,CAAC,CAACsB,gBAAgB,CAAC,CAAC;MAElE,MAAMU,MAAM,GAAG,IAAI7D,kBAAkB,CAAC;QAClCyB,MAAM,EAAE,QAAQ;QAChBN,KAAK,EAAE,YAAY;QACnBS,WAAW,EAAE,QAAQ;QACrBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;MAEF,MAAMyD,MAAM,GAAG,IAAI9D,kBAAkB,CAAC;QAClCyB,MAAM,EAAE,QAAQ;QAChBN,KAAK,EAAE,aAAa;QACpBS,WAAW,EAAE,QAAQ;QACrBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;MAEF,MAAM2C,SAAS,CAACK,OAAO,CAACQ,MAAM,CAAC;MAC/B,MAAMb,SAAS,CAACK,OAAO,CAACS,MAAM,CAAC;MAE/B,MAAMJ,OAAO,GAAGX,SAAS,CAACG,OAAO,CAAC3C,oBAAoB,CAA4B;MAClFf,MAAM,CAACkE,OAAO,CAAC7C,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAC7ChE,MAAM,CAACkE,OAAO,CAAC7C,aAAa,CAAC,CAAC,CAAC,CAACV,OAAO,CAACsB,MAAM,CAAC,CAACmC,IAAI,CAAC,QAAQ,CAAC;MAC9DpE,MAAM,CAACkE,OAAO,CAAC7C,aAAa,CAAC,CAAC,CAAC,CAACV,OAAO,CAACsB,MAAM,CAAC,CAACmC,IAAI,CAAC,QAAQ,CAAC;IAClE,CAAC,CAAC;IAEFrE,EAAE,CAAC,yCAAyC,EAAE,YAAY;MACtD,MAAMwB,KAAK,GAAG,IAAIf,kBAAkB,CAAC;QACjCyB,MAAM,EAAE,UAAU;QAClBN,KAAK,EAAE,aAAa;QACpBS,WAAW,EAAE,UAAU;QACvBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;;MAEF;MACA,MAAMb,MAAM,CAACwD,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC,CAAC,CAACgD,QAAQ,CAACC,GAAG,CAACC,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC;EACN,CAAC,CAAC;EAEF3E,QAAQ,CAAC,sBAAsB,EAAE,MAAM;IACnCC,EAAE,CAAC,uDAAuD,EAAE,YAAY;MACpEwD,SAAS,CAACE,QAAQ,CAACjB,2BAA2B,CAAC,CAACmB,gBAAgB,CAAC,CAAC;MAClEJ,SAAS,CAACE,QAAQ,CAACd,4BAA4B,CAAC,CAACgB,gBAAgB,CAAC,CAAC;MACnEJ,SAAS,CAACE,QAAQ,CAACZ,gCAAgC,CAAC,CAACc,gBAAgB,CAAC,CAAC;MAEvE,MAAMpC,KAAK,GAAG,IAAIP,mBAAmB,CAAC;QAClC0B,MAAM,EAAE,UAAU;QAClBH,KAAK,EAAE,kBAAkB;QACzBmC,IAAI,EAAE;MACV,CAAC,CAAC;MAEF,MAAMlB,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;MAE9B,MAAMuC,QAAQ,GAAGP,SAAS,CAACQ,UAAU,CAAC9C,qBAAqB,CAAC;MAC5DjB,MAAM,CAAC8D,QAAQ,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;MAEhChE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA6BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAC9EhE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA8BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAC/EhE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAAkCzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC;IAEFjE,EAAE,CAAC,2CAA2C,EAAE,YAAY;MACxDwD,SAAS,CAACE,QAAQ,CAACd,4BAA4B,CAAC,CAACgB,gBAAgB,CAAC,CAAC;MAEnE,MAAMpC,KAAK,GAAG,IAAIP,mBAAmB,CAAC;QAClC0B,MAAM,EAAE,UAAU;QAClBH,KAAK,EAAE,kBAAkB;QACzBmC,IAAI,EAAE;MACV,CAAC,CAAC;MAEF,MAAMlB,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;MAE9B,MAAM2C,OAAO,GAAGX,SAAS,CAACG,OAAO,CAACzC,qBAAqB,CAA6B;MACpF,MAAMkD,YAAY,GAAGD,OAAO,CAAC7C,aAAa,CAAC,CAAC,CAAC;MAE7CrB,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAAC+B,MAAM,CAAC,CAAC0B,IAAI,CAAC,UAAU,CAAC;MACpDpE,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAAC4B,KAAK,CAAC,CAAC6B,IAAI,CAAC,kBAAkB,CAAC;MAC3DpE,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAAC+D,IAAI,CAAC,CAACN,IAAI,CAAC,YAAY,CAAC;MACpDpE,MAAM,CAACmE,YAAY,CAAC1D,SAAS,CAAC,CAAC2D,IAAI,CAAC,iBAAiB,CAAC;IAC1D,CAAC,CAAC;EACN,CAAC,CAAC;EAEFtE,QAAQ,CAAC,mBAAmB,EAAE,MAAM;IAChCC,EAAE,CAAC,oDAAoD,EAAE,YAAY;MACjEwD,SAAS,CAACE,QAAQ,CAACT,yBAAyB,CAAC,CAACW,gBAAgB,CAAC,CAAC;MAChEJ,SAAS,CAACE,QAAQ,CAACP,gCAAgC,CAAC,CAACS,gBAAgB,CAAC,CAAC;MACvEJ,SAAS,CAACE,QAAQ,CAACH,0BAA0B,CAAC,CAACK,gBAAgB,CAAC,CAAC;MAEjE,MAAMpC,KAAK,GAAG,IAAIL,gBAAgB,CAAC;QAC/B6B,OAAO,EAAE,WAAW;QACpB4B,UAAU,EAAE,cAAc;QAC1BC,KAAK,EAAE,KAAK;QACZxB,KAAK,EAAE,CACH;UAAEyB,SAAS,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAE,CAAC,EACpC;UAAED,SAAS,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAE,CAAC;MAE5C,CAAC,CAAC;MAEF,MAAMtB,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;MAE9B,MAAMuC,QAAQ,GAAGP,SAAS,CAACQ,UAAU,CAAC5C,kBAAkB,CAAC;MACzDnB,MAAM,CAAC8D,QAAQ,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;MAEhChE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA2BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAC5EhE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAAkCzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MACnFhE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA4BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC;IAEFjE,EAAE,CAAC,4CAA4C,EAAE,YAAY;MACzDwD,SAAS,CAACE,QAAQ,CAACH,0BAA0B,CAAC,CAACK,gBAAgB,CAAC,CAAC;MAEjE,MAAMoB,SAAS,GAAG;QACdhC,OAAO,EAAE,WAAW;QACpB4B,UAAU,EAAE,cAAc;QAC1BC,KAAK,EAAE,MAAM;QACbxB,KAAK,EAAE,CACH;UAAEyB,SAAS,EAAE,SAAS;UAAEC,QAAQ,EAAE;QAAE,CAAC,EACrC;UAAED,SAAS,EAAE,SAAS;UAAEC,QAAQ,EAAE;QAAE,CAAC;MAE7C,CAAC;MAED,MAAMvD,KAAK,GAAG,IAAIL,gBAAgB,CAAC6D,SAAS,CAAC;MAC7C,MAAMvB,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;MAE9B,MAAM2C,OAAO,GAAGX,SAAS,CAACG,OAAO,CAACvC,kBAAkB,CAA2B;MAC/E,MAAMgD,YAAY,GAAGD,OAAO,CAAC7C,aAAa,CAAC,CAAC,CAAC;MAE7CrB,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAACoC,OAAO,CAAC,CAACqB,IAAI,CAACW,SAAS,CAAChC,OAAO,CAAC;MAC5D/C,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAACiE,KAAK,CAAC,CAACR,IAAI,CAACW,SAAS,CAACH,KAAK,CAAC;MACxD5E,MAAM,CAACmE,YAAY,CAACxD,OAAO,CAACyC,KAAK,CAAC,CAACY,YAAY,CAAC,CAAC,CAAC;MAClDhE,MAAM,CAACmE,YAAY,CAAC1D,SAAS,CAAC,CAAC2D,IAAI,CAAC,cAAc,CAAC;IACvD,CAAC,CAAC;EACN,CAAC,CAAC;EAEFtE,QAAQ,CAAC,cAAc,EAAE,MAAM;IAC3BC,EAAE,CAAC,mDAAmD,EAAE,YAAY;MAChE;MACAwD,SAAS,CAACE,QAAQ,CAAC7B,2BAA2B,CAAC,CAAC+B,gBAAgB,CAAC,CAAC;MAClEJ,SAAS,CAACE,QAAQ,CAACjB,2BAA2B,CAAC,CAACmB,gBAAgB,CAAC,CAAC;MAClEJ,SAAS,CAACE,QAAQ,CAACT,yBAAyB,CAAC,CAACW,gBAAgB,CAAC,CAAC;;MAEhE;MACA,MAAMqB,SAAS,GAAG,IAAIxE,kBAAkB,CAAC;QACrCyB,MAAM,EAAE,QAAQ;QAChBN,KAAK,EAAE,WAAW;QAClBS,WAAW,EAAE,QAAQ;QACrBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;MAEF,MAAMoE,SAAS,GAAG,IAAIjE,mBAAmB,CAAC;QACtC0B,MAAM,EAAE,QAAQ;QAChBH,KAAK,EAAE,kBAAkB;QACzBmC,IAAI,EAAE;MACV,CAAC,CAAC;MAEF,MAAMQ,UAAU,GAAG,IAAIhE,gBAAgB,CAAC;QACpC6B,OAAO,EAAE,SAAS;QAClB4B,UAAU,EAAE,YAAY;QACxBC,KAAK,EAAE,IAAI;QACXxB,KAAK,EAAE,CAAC;UAAEyB,SAAS,EAAE,QAAQ;UAAEC,QAAQ,EAAE;QAAE,CAAC;MAChD,CAAC,CAAC;MAEF,MAAMtB,SAAS,CAACK,OAAO,CAACmB,SAAS,CAAC;MAClC,MAAMxB,SAAS,CAACK,OAAO,CAACoB,SAAS,CAAC;MAClC,MAAMzB,SAAS,CAACK,OAAO,CAACqB,UAAU,CAAC;;MAEnC;MACA,MAAMC,YAAY,GAAG5B,SAAS,CAACQ,UAAU,CAAChD,oBAAoB,CAAC;MAC/D,MAAMqE,YAAY,GAAG7B,SAAS,CAACQ,UAAU,CAAC9C,qBAAqB,CAAC;MAChE,MAAMoE,aAAa,GAAG9B,SAAS,CAACQ,UAAU,CAAC5C,kBAAkB,CAAC;MAE9DnB,MAAM,CAAEmF,YAAY,CAAC,CAAC,CAAC,CAA6B9D,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAClFhE,MAAM,CAAEoF,YAAY,CAAC,CAAC,CAAC,CAA6B/D,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MAClFhE,MAAM,CAAEqF,aAAa,CAAC,CAAC,CAAC,CAA2BhE,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC;IAEFjE,EAAE,CAAC,+CAA+C,EAAE,YAAY;MAC5DwD,SAAS,CAACE,QAAQ,CAAC7B,2BAA2B,CAAC,CAAC+B,gBAAgB,CAAC,CAAC;MAClEJ,SAAS,CAACE,QAAQ,CAACjB,2BAA2B,CAAC,CAACmB,gBAAgB,CAAC,CAAC;MAElE,MAAMqB,SAAS,GAAG,IAAIxE,kBAAkB,CAAC;QACrCyB,MAAM,EAAE,QAAQ;QAChBN,KAAK,EAAE,MAAM;QACbS,WAAW,EAAE,QAAQ;QACrBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;MAEF,MAAMoE,SAAS,GAAG,IAAIjE,mBAAmB,CAAC;QACtC0B,MAAM,EAAE,QAAQ;QAChBH,KAAK,EAAE,eAAe;QACtBmC,IAAI,EAAE;MACV,CAAC,CAAC;MAEF,MAAMlB,SAAS,CAACK,OAAO,CAACmB,SAAS,CAAC;MAClC,MAAMxB,SAAS,CAACK,OAAO,CAACoB,SAAS,CAAC;MAElC,MAAMK,WAAW,GAAG/B,SAAS,CAACG,OAAO,CAAC3C,oBAAoB,CAA4B;MACtF,MAAMwE,WAAW,GAAGhC,SAAS,CAACG,OAAO,CAACzC,qBAAqB,CAA4B;;MAEvF;MACAjB,MAAM,CAACsF,WAAW,CAACjE,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MACjDhE,MAAM,CAACsF,WAAW,CAACjE,aAAa,CAAC,CAAC,CAAC,CAACZ,SAAS,CAAC,CAAC2D,IAAI,CAAC,gBAAgB,CAAC;;MAErE;MACApE,MAAM,CAACuF,WAAW,CAAClE,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;MACjDhE,MAAM,CAACuF,WAAW,CAAClE,aAAa,CAAC,CAAC,CAAC,CAACZ,SAAS,CAAC,CAAC2D,IAAI,CAAC,iBAAiB,CAAC;IAC1E,CAAC,CAAC;EACN,CAAC,CAAC;EAEFtE,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAC7BC,EAAE,CAAC,yCAAyC,EAAE,YAAY;MACtD,MAAMyF,cAAc,CAA8C;QAC9D,MAAMlE,MAAMA,CAAA,EAAkB;UAC1B,MAAM,IAAImE,KAAK,CAAC,iBAAiB,CAAC;QACtC;MACJ;MAEA,MAAMC,kBAAkB,GAAGtF,oBAAoB,CAAC;QAC5CyB,WAAW,EAAEd,oBAAoB;QACjCe,cAAc,EAAE0D,cAAc;QAC9BzD,YAAY,EAAE;MAClB,CAAC,CAAC;MAEFwB,SAAS,CAACE,QAAQ,CAACiC,kBAAkB,CAAC;MAEtC,MAAMnE,KAAK,GAAG,IAAIf,kBAAkB,CAAC;QACjCyB,MAAM,EAAE,QAAQ;QAChBN,KAAK,EAAE,MAAM;QACbS,WAAW,EAAE,QAAQ;QACrBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;;MAEF;MACA,MAAMb,MAAM,CAACwD,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC,CAAC,CAACoE,OAAO,CAAClB,OAAO,CAAC,iBAAiB,CAAC;IAC7E,CAAC,CAAC;EACN,CAAC,CAAC;EAEF3E,QAAQ,CAAC,sBAAsB,EAAE,MAAM;IACnCC,EAAE,CAAC,6CAA6C,EAAE,YAAY;MAC1D,MAAMwB,KAAK,GAAG,IAAIf,kBAAkB,CAAC;QACjCyB,MAAM,EAAE,QAAQ;QAChBN,KAAK,EAAE,MAAM;QACbS,WAAW,EAAE,QAAQ;QACrBwB,WAAW,EAAE,IAAI/C,IAAI,CAAC;MAC1B,CAAC,CAAC;;MAEF;MACA,MAAM2C,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;MAE9B,IAAIuC,QAAQ,GAAGP,SAAS,CAACQ,UAAU,CAAChD,oBAAoB,CAAC;MACzDf,MAAM,CAAC8D,QAAQ,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;;MAEhC;MACAT,SAAS,CAACE,QAAQ,CAAC7B,2BAA2B,CAAC,CAAC+B,gBAAgB,CAAC,CAAC;;MAElE;MACA,MAAMH,SAAS,CAACK,OAAO,CAACtC,KAAK,CAAC;MAE9BuC,QAAQ,GAAGP,SAAS,CAACQ,UAAU,CAAChD,oBAAoB,CAAC;MACrDf,MAAM,CAAC8D,QAAQ,CAAC,CAACE,YAAY,CAAC,CAAC,CAAC;MAChChE,MAAM,CAAE8D,QAAQ,CAAC,CAAC,CAAC,CAA6BzC,aAAa,CAAC,CAAC2C,YAAY,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"features/eventPublisher/__tests__/EventPublisher.test.js","sources":["../../../../src/features/eventPublisher/__tests__/EventPublisher.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach } from \"vitest\";\nimport { Container, Abstraction, createImplementation } from \"@webiny/di\";\nimport { EventPublisherFeature } from \"../feature.js\";\nimport { EventPublisher as EventPublisherAbstraction } from \"../abstractions.js\";\nimport type { DomainEvent, IEventHandler } from \"../abstractions.js\";\n\n// ============================================================================\n// Test Event: PagePublished\n// ============================================================================\n\ninterface PagePublishedPayload {\n pageId: string;\n title: string;\n publishedBy: string;\n publishedAt: Date;\n}\n\nclass PagePublishedEvent implements DomainEvent<PagePublishedPayload> {\n eventType = \"page.published\" as const;\n occurredAt: Date;\n\n constructor(public payload: PagePublishedPayload) {\n this.occurredAt = new Date();\n }\n\n getHandlerAbstraction() {\n return PagePublishedHandler;\n }\n}\n\nexport const PagePublishedHandler = new Abstraction<IEventHandler<PagePublishedEvent>>(\n \"PagePublishedHandler\"\n);\n\n// ============================================================================\n// Test Event: UserRegistered\n// ============================================================================\n\ninterface UserRegisteredPayload {\n userId: string;\n email: string;\n name: string;\n}\n\nclass UserRegisteredEvent implements DomainEvent<UserRegisteredPayload> {\n eventType = \"user.registered\" as const;\n occurredAt: Date;\n\n constructor(public payload: UserRegisteredPayload) {\n this.occurredAt = new Date();\n }\n\n getHandlerAbstraction() {\n return UserRegisteredHandler;\n }\n}\n\nexport const UserRegisteredHandler = new Abstraction<IEventHandler<UserRegisteredEvent>>(\n \"UserRegisteredHandler\"\n);\n\n// ============================================================================\n// Test Event: OrderPlaced\n// ============================================================================\n\ninterface OrderPlacedPayload {\n orderId: string;\n customerId: string;\n total: number;\n items: Array<{ productId: string; quantity: number }>;\n}\n\nclass OrderPlacedEvent implements DomainEvent<OrderPlacedPayload> {\n eventType = \"order.placed\" as const;\n occurredAt: Date;\n\n constructor(public payload: OrderPlacedPayload) {\n this.occurredAt = new Date();\n }\n\n getHandlerAbstraction() {\n return OrderPlacedHandler;\n }\n}\n\nexport const OrderPlacedHandler = new Abstraction<IEventHandler<OrderPlacedEvent>>(\n \"OrderPlacedHandler\"\n);\n\n// ============================================================================\n// Handler Implementations for PagePublished\n// ============================================================================\n\nclass SendNotificationHandler implements IEventHandler<PagePublishedEvent> {\n public handledEvents: PagePublishedEvent[] = [];\n\n async handle(event: PagePublishedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📧 Sending notification for page: ${event.payload.title}`);\n }\n}\n\nexport const SendNotificationHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: SendNotificationHandler,\n dependencies: []\n});\n\nclass UpdateSearchIndexHandler implements IEventHandler<PagePublishedEvent> {\n public handledEvents: PagePublishedEvent[] = [];\n\n async handle(event: PagePublishedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`🔍 Updating search index for page: ${event.payload.pageId}`);\n }\n}\n\nexport const UpdateSearchIndexHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: UpdateSearchIndexHandler,\n dependencies: []\n});\n\nclass LogPagePublishedHandler implements IEventHandler<PagePublishedEvent> {\n public handledEvents: PagePublishedEvent[] = [];\n\n async handle(event: PagePublishedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(\n `📝 Logging: Page ${event.payload.pageId} published by ${event.payload.publishedBy}`\n );\n }\n}\n\nexport const LogPagePublishedHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: LogPagePublishedHandler,\n dependencies: []\n});\n\n// ============================================================================\n// Handler Implementations for UserRegistered\n// ============================================================================\n\nclass SendWelcomeEmailHandler implements IEventHandler<UserRegisteredEvent> {\n public handledEvents: UserRegisteredEvent[] = [];\n\n async handle(event: UserRegisteredEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`👋 Sending welcome email to: ${event.payload.email}`);\n }\n}\n\nexport const SendWelcomeEmailHandlerImpl = createImplementation({\n abstraction: UserRegisteredHandler,\n implementation: SendWelcomeEmailHandler,\n dependencies: []\n});\n\nclass CreateUserProfileHandler implements IEventHandler<UserRegisteredEvent> {\n public handledEvents: UserRegisteredEvent[] = [];\n\n async handle(event: UserRegisteredEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`👤 Creating profile for user: ${event.payload.userId}`);\n }\n}\n\nexport const CreateUserProfileHandlerImpl = createImplementation({\n abstraction: UserRegisteredHandler,\n implementation: CreateUserProfileHandler,\n dependencies: []\n});\n\nclass TrackUserRegistrationHandler implements IEventHandler<UserRegisteredEvent> {\n public handledEvents: UserRegisteredEvent[] = [];\n\n async handle(event: UserRegisteredEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📊 Tracking registration analytics for: ${event.payload.userId}`);\n }\n}\n\nexport const TrackUserRegistrationHandlerImpl = createImplementation({\n abstraction: UserRegisteredHandler,\n implementation: TrackUserRegistrationHandler,\n dependencies: []\n});\n\n// ============================================================================\n// Handler Implementations for OrderPlaced\n// ============================================================================\n\nclass ProcessPaymentHandler implements IEventHandler<OrderPlacedEvent> {\n public handledEvents: OrderPlacedEvent[] = [];\n\n async handle(event: OrderPlacedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`💳 Processing payment for order: ${event.payload.orderId}`);\n }\n}\n\nexport const ProcessPaymentHandlerImpl = createImplementation({\n abstraction: OrderPlacedHandler,\n implementation: ProcessPaymentHandler,\n dependencies: []\n});\n\nclass SendOrderConfirmationHandler implements IEventHandler<OrderPlacedEvent> {\n public handledEvents: OrderPlacedEvent[] = [];\n\n async handle(event: OrderPlacedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📧 Sending order confirmation for: ${event.payload.orderId}`);\n }\n}\n\nexport const SendOrderConfirmationHandlerImpl = createImplementation({\n abstraction: OrderPlacedHandler,\n implementation: SendOrderConfirmationHandler,\n dependencies: []\n});\n\nclass UpdateInventoryHandler implements IEventHandler<OrderPlacedEvent> {\n public handledEvents: OrderPlacedEvent[] = [];\n\n async handle(event: OrderPlacedEvent): Promise<void> {\n this.handledEvents.push(event);\n console.log(`📦 Updating inventory for ${event.payload.items.length} items`);\n }\n}\n\nexport const UpdateInventoryHandlerImpl = createImplementation({\n abstraction: OrderPlacedHandler,\n implementation: UpdateInventoryHandler,\n dependencies: []\n});\n\n// ============================================================================\n// Tests\n// ============================================================================\n\ndescribe(\"EventPublisher\", () => {\n let container: Container;\n let publisher: EventPublisherAbstraction.Interface;\n\n beforeEach(() => {\n container = new Container();\n\n // ✅ Register EventPublisher using the feature\n EventPublisherFeature.register(container);\n\n publisher = container.resolve(EventPublisherAbstraction);\n });\n\n describe(\"PagePublished Event\", () => {\n it(\"should execute all registered PagePublished handlers\", async () => {\n // Register handlers\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n container.register(UpdateSearchIndexHandlerImpl).inSingletonScope();\n container.register(LogPagePublishedHandlerImpl).inSingletonScope();\n\n // Create and publish event\n const event = new PagePublishedEvent({\n pageId: \"page-123\",\n title: \"Getting Started with TypeScript\",\n publishedBy: \"user-456\",\n publishedAt: new Date()\n });\n\n await publisher.publish(event);\n\n // Verify all handlers were called\n const handlers = container.resolveAll(PagePublishedHandler);\n expect(handlers).toHaveLength(3);\n\n expect((handlers[0] as SendNotificationHandler).handledEvents).toHaveLength(1);\n expect((handlers[1] as UpdateSearchIndexHandler).handledEvents).toHaveLength(1);\n expect((handlers[2] as LogPagePublishedHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should pass correct event data to handlers\", async () => {\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n\n const eventData = {\n pageId: \"page-789\",\n title: \"Advanced Patterns\",\n publishedBy: \"admin-001\",\n publishedAt: new Date(\"2024-01-15\")\n };\n\n const event = new PagePublishedEvent(eventData);\n await publisher.publish(event);\n\n const handler = container.resolve(PagePublishedHandler) as SendNotificationHandler;\n const handledEvent = handler.handledEvents[0];\n\n expect(handledEvent.payload.pageId).toBe(eventData.pageId);\n expect(handledEvent.payload.title).toBe(eventData.title);\n expect(handledEvent.payload.publishedBy).toBe(eventData.publishedBy);\n expect(handledEvent.eventType).toBe(\"page.published\");\n });\n\n it(\"should handle multiple events sequentially\", async () => {\n container.register(LogPagePublishedHandlerImpl).inSingletonScope();\n\n const event1 = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"First Page\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n const event2 = new PagePublishedEvent({\n pageId: \"page-2\",\n title: \"Second Page\",\n publishedBy: \"user-2\",\n publishedAt: new Date()\n });\n\n await publisher.publish(event1);\n await publisher.publish(event2);\n\n const handler = container.resolve(PagePublishedHandler) as LogPagePublishedHandler;\n expect(handler.handledEvents).toHaveLength(2);\n expect(handler.handledEvents[0].payload.pageId).toBe(\"page-1\");\n expect(handler.handledEvents[1].payload.pageId).toBe(\"page-2\");\n });\n\n it(\"should work with no handlers registered\", async () => {\n const event = new PagePublishedEvent({\n pageId: \"page-999\",\n title: \"Orphan Page\",\n publishedBy: \"user-999\",\n publishedAt: new Date()\n });\n\n // Should not throw\n await expect(publisher.publish(event)).resolves.not.toThrow();\n });\n });\n\n describe(\"UserRegistered Event\", () => {\n it(\"should execute all registered UserRegistered handlers\", async () => {\n container.register(SendWelcomeEmailHandlerImpl).inSingletonScope();\n container.register(CreateUserProfileHandlerImpl).inSingletonScope();\n container.register(TrackUserRegistrationHandlerImpl).inSingletonScope();\n\n const event = new UserRegisteredEvent({\n userId: \"user-123\",\n email: \"john@example.com\",\n name: \"John Doe\"\n });\n\n await publisher.publish(event);\n\n const handlers = container.resolveAll(UserRegisteredHandler);\n expect(handlers).toHaveLength(3);\n\n expect((handlers[0] as SendWelcomeEmailHandler).handledEvents).toHaveLength(1);\n expect((handlers[1] as CreateUserProfileHandler).handledEvents).toHaveLength(1);\n expect((handlers[2] as TrackUserRegistrationHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should pass correct user data to handlers\", async () => {\n container.register(CreateUserProfileHandlerImpl).inSingletonScope();\n\n const event = new UserRegisteredEvent({\n userId: \"user-456\",\n email: \"jane@example.com\",\n name: \"Jane Smith\"\n });\n\n await publisher.publish(event);\n\n const handler = container.resolve(UserRegisteredHandler) as CreateUserProfileHandler;\n const handledEvent = handler.handledEvents[0];\n\n expect(handledEvent.payload.userId).toBe(\"user-456\");\n expect(handledEvent.payload.email).toBe(\"jane@example.com\");\n expect(handledEvent.payload.name).toBe(\"Jane Smith\");\n expect(handledEvent.eventType).toBe(\"user.registered\");\n });\n });\n\n describe(\"OrderPlaced Event\", () => {\n it(\"should execute all registered OrderPlaced handlers\", async () => {\n container.register(ProcessPaymentHandlerImpl).inSingletonScope();\n container.register(SendOrderConfirmationHandlerImpl).inSingletonScope();\n container.register(UpdateInventoryHandlerImpl).inSingletonScope();\n\n const event = new OrderPlacedEvent({\n orderId: \"order-123\",\n customerId: \"customer-456\",\n total: 99.99,\n items: [\n { productId: \"prod-1\", quantity: 2 },\n { productId: \"prod-2\", quantity: 1 }\n ]\n });\n\n await publisher.publish(event);\n\n const handlers = container.resolveAll(OrderPlacedHandler);\n expect(handlers).toHaveLength(3);\n\n expect((handlers[0] as ProcessPaymentHandler).handledEvents).toHaveLength(1);\n expect((handlers[1] as SendOrderConfirmationHandler).handledEvents).toHaveLength(1);\n expect((handlers[2] as UpdateInventoryHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should pass correct order data to handlers\", async () => {\n container.register(UpdateInventoryHandlerImpl).inSingletonScope();\n\n const orderData = {\n orderId: \"order-789\",\n customerId: \"customer-123\",\n total: 249.99,\n items: [\n { productId: \"prod-10\", quantity: 1 },\n { productId: \"prod-20\", quantity: 3 }\n ]\n };\n\n const event = new OrderPlacedEvent(orderData);\n await publisher.publish(event);\n\n const handler = container.resolve(OrderPlacedHandler) as UpdateInventoryHandler;\n const handledEvent = handler.handledEvents[0];\n\n expect(handledEvent.payload.orderId).toBe(orderData.orderId);\n expect(handledEvent.payload.total).toBe(orderData.total);\n expect(handledEvent.payload.items).toHaveLength(2);\n expect(handledEvent.eventType).toBe(\"order.placed\");\n });\n });\n\n describe(\"Mixed Events\", () => {\n it(\"should handle different event types independently\", async () => {\n // Register handlers for different events\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n container.register(SendWelcomeEmailHandlerImpl).inSingletonScope();\n container.register(ProcessPaymentHandlerImpl).inSingletonScope();\n\n // Publish different events\n const pageEvent = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test Page\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n const userEvent = new UserRegisteredEvent({\n userId: \"user-2\",\n email: \"test@example.com\",\n name: \"Test User\"\n });\n\n const orderEvent = new OrderPlacedEvent({\n orderId: \"order-1\",\n customerId: \"customer-1\",\n total: 50.0,\n items: [{ productId: \"prod-1\", quantity: 1 }]\n });\n\n await publisher.publish(pageEvent);\n await publisher.publish(userEvent);\n await publisher.publish(orderEvent);\n\n // Verify each handler only received its event type\n const pageHandlers = container.resolveAll(PagePublishedHandler);\n const userHandlers = container.resolveAll(UserRegisteredHandler);\n const orderHandlers = container.resolveAll(OrderPlacedHandler);\n\n expect((pageHandlers[0] as SendNotificationHandler).handledEvents).toHaveLength(1);\n expect((userHandlers[0] as SendWelcomeEmailHandler).handledEvents).toHaveLength(1);\n expect((orderHandlers[0] as ProcessPaymentHandler).handledEvents).toHaveLength(1);\n });\n\n it(\"should maintain event isolation between types\", async () => {\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n container.register(SendWelcomeEmailHandlerImpl).inSingletonScope();\n\n const pageEvent = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n const userEvent = new UserRegisteredEvent({\n userId: \"user-1\",\n email: \"test@test.com\",\n name: \"Test\"\n });\n\n await publisher.publish(pageEvent);\n await publisher.publish(userEvent);\n\n const pageHandler = container.resolve(PagePublishedHandler) as SendNotificationHandler;\n const userHandler = container.resolve(UserRegisteredHandler) as SendWelcomeEmailHandler;\n\n // Page handler should only have page events\n expect(pageHandler.handledEvents).toHaveLength(1);\n expect(pageHandler.handledEvents[0].eventType).toBe(\"page.published\");\n\n // User handler should only have user events\n expect(userHandler.handledEvents).toHaveLength(1);\n expect(userHandler.handledEvents[0].eventType).toBe(\"user.registered\");\n });\n });\n\n describe(\"Error Handling\", () => {\n it(\"should handle handler errors gracefully\", async () => {\n class FailingHandler implements IEventHandler<PagePublishedEvent> {\n async handle(): Promise<void> {\n throw new Error(\"Handler failed!\");\n }\n }\n\n const FailingHandlerImpl = createImplementation({\n abstraction: PagePublishedHandler,\n implementation: FailingHandler,\n dependencies: []\n });\n\n container.register(FailingHandlerImpl);\n\n const event = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n // Should throw the handler error\n await expect(publisher.publish(event)).rejects.toThrow(\"Handler failed!\");\n });\n });\n\n describe(\"Handler Registration\", () => {\n it(\"should support dynamic handler registration\", async () => {\n const event = new PagePublishedEvent({\n pageId: \"page-1\",\n title: \"Test\",\n publishedBy: \"user-1\",\n publishedAt: new Date()\n });\n\n // No handlers yet\n await publisher.publish(event);\n\n let handlers = container.resolveAll(PagePublishedHandler);\n expect(handlers).toHaveLength(0);\n\n // Register handler\n container.register(SendNotificationHandlerImpl).inSingletonScope();\n\n // Now handler should execute\n await publisher.publish(event);\n\n handlers = container.resolveAll(PagePublishedHandler);\n expect(handlers).toHaveLength(1);\n expect((handlers[0] as SendNotificationHandler).handledEvents).toHaveLength(1);\n });\n });\n});\n"],"names":["PagePublishedEvent","payload","Date","PagePublishedHandler","Abstraction","UserRegisteredEvent","UserRegisteredHandler","OrderPlacedEvent","OrderPlacedHandler","SendNotificationHandler","event","console","SendNotificationHandlerImpl","createImplementation","UpdateSearchIndexHandler","UpdateSearchIndexHandlerImpl","LogPagePublishedHandler","LogPagePublishedHandlerImpl","SendWelcomeEmailHandler","SendWelcomeEmailHandlerImpl","CreateUserProfileHandler","CreateUserProfileHandlerImpl","TrackUserRegistrationHandler","TrackUserRegistrationHandlerImpl","ProcessPaymentHandler","ProcessPaymentHandlerImpl","SendOrderConfirmationHandler","SendOrderConfirmationHandlerImpl","UpdateInventoryHandler","UpdateInventoryHandlerImpl","describe","container","publisher","beforeEach","Container","EventPublisherFeature","EventPublisherAbstraction","it","handlers","expect","eventData","handler","handledEvent","event1","event2","orderData","pageEvent","userEvent","orderEvent","pageHandlers","userHandlers","orderHandlers","pageHandler","userHandler","FailingHandler","Error","FailingHandlerImpl"],"mappings":"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"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { Abstraction } from "@webiny/di";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (payload === undefined) {
|
|
8
|
-
this.payload = undefined;
|
|
9
|
-
} else {
|
|
10
|
-
this.payload = payload;
|
|
2
|
+
class DomainEvent {
|
|
3
|
+
constructor(payload){
|
|
4
|
+
this.occurredAt = new Date();
|
|
5
|
+
if (void 0 === payload) this.payload = void 0;
|
|
6
|
+
else this.payload = payload;
|
|
11
7
|
}
|
|
12
|
-
}
|
|
13
8
|
}
|
|
14
|
-
|
|
15
|
-
export
|
|
9
|
+
const EventPublisher = new Abstraction("EventPublisher");
|
|
10
|
+
export { DomainEvent, EventPublisher };
|
|
16
11
|
|
|
17
12
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/eventPublisher/abstractions.js","sources":["../../../src/features/eventPublisher/abstractions.ts"],"sourcesContent":["import { Abstraction } from \"@webiny/di\";\n\n/** Base class for all domain events. */\nexport abstract class DomainEvent<TPayload = void> {\n public abstract readonly eventType: string;\n public readonly occurredAt: Date;\n public readonly payload: TPayload extends void ? undefined : TPayload;\n\n constructor(payload: TPayload);\n constructor(payload?: never) {\n this.occurredAt = new Date();\n\n if (payload === undefined) {\n this.payload = undefined as any;\n } else {\n this.payload = payload;\n }\n }\n\n abstract getHandlerAbstraction(): Abstraction<IEventHandler<any>>;\n}\n\nexport interface IEventHandler<TEvent extends DomainEvent<any> = DomainEvent<any>> {\n handle(event: TEvent): Promise<void>;\n}\n\nexport interface IEventPublisher {\n publish<TEvent extends DomainEvent<any>>(event: TEvent): Promise<void>;\n}\n\n/** Publish domain events to registered handlers. */\nexport const EventPublisher = new Abstraction<IEventPublisher>(\"EventPublisher\");\n\nexport namespace EventPublisher {\n export type Interface = IEventPublisher;\n}\n"],"names":["DomainEvent","payload","Date","undefined","EventPublisher","Abstraction"],"mappings":";AAGO,MAAeA;IAMlB,YAAYC,OAAe,CAAE;QACzB,IAAI,CAAC,UAAU,GAAG,IAAIC;QAEtB,IAAID,AAAYE,WAAZF,SACA,IAAI,CAAC,OAAO,GAAGE;aAEf,IAAI,CAAC,OAAO,GAAGF;IAEvB;AAGJ;AAWO,MAAMG,iBAAiB,IAAIC,YAA6B"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
|
-
import { EventPublisher
|
|
3
|
-
import { EventPublisher } from "./EventPublisher.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import { EventPublisher } from "./abstractions.js";
|
|
3
|
+
import { EventPublisher as external_EventPublisher_js_EventPublisher } from "./EventPublisher.js";
|
|
4
|
+
const EventPublisherFeature = createFeature({
|
|
5
|
+
name: "EventPublisher",
|
|
6
|
+
register (container) {
|
|
7
|
+
container.registerInstance(EventPublisher, new external_EventPublisher_js_EventPublisher(container));
|
|
8
|
+
}
|
|
9
9
|
});
|
|
10
|
+
export { EventPublisherFeature };
|
|
10
11
|
|
|
11
12
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/eventPublisher/feature.js","sources":["../../../src/features/eventPublisher/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { Container } from \"@webiny/di\";\nimport { EventPublisher as EventPublisherAbstraction } from \"./abstractions.js\";\nimport { EventPublisher } from \"./EventPublisher.js\";\n\nexport const EventPublisherFeature = createFeature({\n name: \"EventPublisher\",\n register(container: Container) {\n container.registerInstance(EventPublisherAbstraction, new EventPublisher(container));\n }\n});\n"],"names":["EventPublisherFeature","createFeature","container","EventPublisherAbstraction","EventPublisher"],"mappings":";;;AAKO,MAAMA,wBAAwBC,cAAc;IAC/C,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,gBAAgB,CAACC,gBAA2B,IAAIC,0CAAeF;IAC7E;AACJ"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { FeatureFlags
|
|
1
|
+
import { FeatureFlags } from "./abstractions.js";
|
|
2
2
|
import { BuildParams } from "../buildParams/abstractions.js";
|
|
3
|
-
import { FeatureFlags as
|
|
3
|
+
import { FeatureFlags as feature_flags_FeatureFlags } from "@webiny/feature-flags";
|
|
4
4
|
class FeatureFlagsImpl {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
constructor(buildParams){
|
|
6
|
+
this.buildParams = buildParams;
|
|
7
|
+
}
|
|
8
|
+
get() {
|
|
9
|
+
const raw = this.buildParams.get("FeatureFlags") ?? {};
|
|
10
|
+
return feature_flags_FeatureFlags.fromDto(raw);
|
|
11
|
+
}
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const FeatureFlags_FeatureFlags = FeatureFlags.createImplementation({
|
|
14
|
+
implementation: FeatureFlagsImpl,
|
|
15
|
+
dependencies: [
|
|
16
|
+
BuildParams
|
|
17
|
+
]
|
|
16
18
|
});
|
|
19
|
+
export { FeatureFlags_FeatureFlags as FeatureFlags };
|
|
17
20
|
|
|
18
21
|
//# sourceMappingURL=FeatureFlags.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/featureFlags/FeatureFlags.js","sources":["../../../src/features/featureFlags/FeatureFlags.ts"],"sourcesContent":["import { FeatureFlags as FeatureFlagsAbstraction } from \"./abstractions.js\";\nimport { BuildParams } from \"../buildParams/abstractions.js\";\nimport { FeatureFlags as FeatureFlagsClass } from \"@webiny/feature-flags\";\nimport type { IFeatureFlagsDto } from \"@webiny/feature-flags\";\n\nclass FeatureFlagsImpl implements FeatureFlagsAbstraction.Interface {\n constructor(private buildParams: BuildParams.Interface) {}\n\n get(): FeatureFlagsClass {\n const raw = this.buildParams.get<IFeatureFlagsDto>(\"FeatureFlags\") ?? {};\n return FeatureFlagsClass.fromDto(raw);\n }\n}\n\nexport const FeatureFlags = FeatureFlagsAbstraction.createImplementation({\n implementation: FeatureFlagsImpl,\n dependencies: [BuildParams]\n});\n"],"names":["FeatureFlagsImpl","buildParams","raw","FeatureFlagsClass","FeatureFlags","FeatureFlagsAbstraction","BuildParams"],"mappings":";;;AAKA,MAAMA;IACF,YAAoBC,WAAkC,CAAE;aAApCA,WAAW,GAAXA;IAAqC;IAEzD,MAAyB;QACrB,MAAMC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAmB,mBAAmB,CAAC;QACvE,OAAOC,2BAAAA,OAAyB,CAACD;IACrC;AACJ;AAEO,MAAME,4BAAeC,aAAAA,oBAA4C,CAAC;IACrE,gBAAgBL;IAChB,cAAc;QAACM;KAAY;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/featureFlags/abstractions.js","sources":["../../../src/features/featureFlags/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { FeatureFlags as FeatureFlagsClass } from \"@webiny/feature-flags\";\n\nexport interface IFeatureFlagsAbstraction {\n get(): FeatureFlagsClass;\n}\n\nexport const FeatureFlags = createAbstraction<IFeatureFlagsAbstraction>(\"FeatureFlags\");\n\nexport namespace FeatureFlags {\n export type Interface = IFeatureFlagsAbstraction;\n}\n"],"names":["FeatureFlags","createAbstraction"],"mappings":";AAOO,MAAMA,eAAeC,kBAA4C"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { FeatureFlags } from "./FeatureFlags.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const FeatureFlagsFeature = createFeature({
|
|
4
|
+
name: "FeatureFlags",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(FeatureFlags);
|
|
7
|
+
}
|
|
8
8
|
});
|
|
9
|
+
export { FeatureFlagsFeature };
|
|
9
10
|
|
|
10
11
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/featureFlags/feature.js","sources":["../../../src/features/featureFlags/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { FeatureFlags } from \"./FeatureFlags.js\";\n\nexport const FeatureFlagsFeature = createFeature({\n name: \"FeatureFlags\",\n register(container: Container) {\n container.register(FeatureFlags);\n }\n});\n"],"names":["FeatureFlagsFeature","createFeature","container","FeatureFlags"],"mappings":";;AAIO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -1,30 +1,35 @@
|
|
|
1
1
|
import { createImplementation } from "@webiny/feature/api";
|
|
2
|
-
import {
|
|
2
|
+
import { GlobalKeyValueStore, KeyValueStoreRepository } from "./abstractions.js";
|
|
3
3
|
const DEFAULT_SCOPE = "global";
|
|
4
4
|
class GlobalKeyValueStoreImpl {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
constructor(repository){
|
|
6
|
+
this.repository = repository;
|
|
7
|
+
}
|
|
8
|
+
getScope(options) {
|
|
9
|
+
return options?.scope || DEFAULT_SCOPE;
|
|
10
|
+
}
|
|
11
|
+
async get(key, options) {
|
|
12
|
+
const scope = this.getScope(options);
|
|
13
|
+
return this.repository.get(key, scope);
|
|
14
|
+
}
|
|
15
|
+
async set(key, value, options) {
|
|
16
|
+
const scope = this.getScope(options);
|
|
17
|
+
return this.repository.set(key, value, scope, {
|
|
18
|
+
expiresAt: options?.expiresAt
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async delete(key, options) {
|
|
22
|
+
const scope = this.getScope(options);
|
|
23
|
+
return this.repository.delete(key, scope);
|
|
24
|
+
}
|
|
23
25
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const GlobalKeyValueStore_GlobalKeyValueStore = createImplementation({
|
|
27
|
+
abstraction: GlobalKeyValueStore,
|
|
28
|
+
implementation: GlobalKeyValueStoreImpl,
|
|
29
|
+
dependencies: [
|
|
30
|
+
KeyValueStoreRepository
|
|
31
|
+
]
|
|
28
32
|
});
|
|
33
|
+
export { GlobalKeyValueStore_GlobalKeyValueStore as GlobalKeyValueStore };
|
|
29
34
|
|
|
30
35
|
//# sourceMappingURL=GlobalKeyValueStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/keyValueStore/GlobalKeyValueStore.js","sources":["../../../src/features/keyValueStore/GlobalKeyValueStore.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport {\n KeyValueStoreRepository,\n GlobalKeyValueStore as ServiceAbstraction,\n IGlobalKeyValueStoreOptions\n} from \"./abstractions.js\";\n\nconst DEFAULT_SCOPE = \"global\";\n\nclass GlobalKeyValueStoreImpl implements ServiceAbstraction.Interface {\n constructor(private repository: KeyValueStoreRepository.Interface) {}\n\n private getScope(options?: IGlobalKeyValueStoreOptions): string {\n return options?.scope || DEFAULT_SCOPE;\n }\n\n async get<T = unknown>(\n key: string,\n options?: IGlobalKeyValueStoreOptions\n ): Promise<Result<T, ServiceAbstraction.Error>> {\n const scope = this.getScope(options);\n return this.repository.get<T>(key, scope);\n }\n\n async set(\n key: string,\n value: any,\n options?: IGlobalKeyValueStoreOptions\n ): Promise<Result<void, ServiceAbstraction.Error>> {\n const scope = this.getScope(options);\n return this.repository.set(key, value, scope, {\n expiresAt: options?.expiresAt\n });\n }\n\n async delete(\n key: string,\n options?: IGlobalKeyValueStoreOptions\n ): Promise<Result<void, ServiceAbstraction.Error>> {\n const scope = this.getScope(options);\n return this.repository.delete(key, scope);\n }\n}\n\nexport const GlobalKeyValueStore = createImplementation({\n abstraction: ServiceAbstraction,\n implementation: GlobalKeyValueStoreImpl,\n dependencies: [KeyValueStoreRepository]\n});\n"],"names":["DEFAULT_SCOPE","GlobalKeyValueStoreImpl","repository","options","key","scope","value","GlobalKeyValueStore","createImplementation","ServiceAbstraction","KeyValueStoreRepository"],"mappings":";;AAQA,MAAMA,gBAAgB;AAEtB,MAAMC;IACF,YAAoBC,UAA6C,CAAE;aAA/CA,UAAU,GAAVA;IAAgD;IAE5D,SAASC,OAAqC,EAAU;QAC5D,OAAOA,SAAS,SAASH;IAC7B;IAEA,MAAM,IACFI,GAAW,EACXD,OAAqC,EACO;QAC5C,MAAME,QAAQ,IAAI,CAAC,QAAQ,CAACF;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAIC,KAAKC;IACvC;IAEA,MAAM,IACFD,GAAW,EACXE,KAAU,EACVH,OAAqC,EACU;QAC/C,MAAME,QAAQ,IAAI,CAAC,QAAQ,CAACF;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACC,KAAKE,OAAOD,OAAO;YAC1C,WAAWF,SAAS;QACxB;IACJ;IAEA,MAAM,OACFC,GAAW,EACXD,OAAqC,EACU;QAC/C,MAAME,QAAQ,IAAI,CAAC,QAAQ,CAACF;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAACC,KAAKC;IACvC;AACJ;AAEO,MAAME,0CAAsBC,qBAAqB;IACpD,aAAaC;IACb,gBAAgBR;IAChB,cAAc;QAACS;KAAwB;AAC3C"}
|
|
@@ -1,33 +1,36 @@
|
|
|
1
|
-
import { KeyValueStore
|
|
2
|
-
import { GlobalKeyValueStore } from "./abstractions.js";
|
|
1
|
+
import { GlobalKeyValueStore, KeyValueStore } from "./abstractions.js";
|
|
3
2
|
import { TenantContext } from "../tenancy/TenantContext/index.js";
|
|
4
3
|
class KeyValueStoreImpl {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
4
|
+
constructor(tenantContext, globalStore){
|
|
5
|
+
this.tenantContext = tenantContext;
|
|
6
|
+
this.globalStore = globalStore;
|
|
7
|
+
}
|
|
8
|
+
async get(key) {
|
|
9
|
+
const tenant = this.tenantContext.getTenant();
|
|
10
|
+
return this.globalStore.get(key, {
|
|
11
|
+
scope: tenant.id
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
async set(key, value) {
|
|
15
|
+
const tenant = this.tenantContext.getTenant();
|
|
16
|
+
return this.globalStore.set(key, value, {
|
|
17
|
+
scope: tenant.id
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async delete(key) {
|
|
21
|
+
const tenant = this.tenantContext.getTenant();
|
|
22
|
+
return this.globalStore.delete(key, {
|
|
23
|
+
scope: tenant.id
|
|
24
|
+
});
|
|
25
|
+
}
|
|
27
26
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
const KeyValueStore_KeyValueStore = KeyValueStore.createImplementation({
|
|
28
|
+
implementation: KeyValueStoreImpl,
|
|
29
|
+
dependencies: [
|
|
30
|
+
TenantContext,
|
|
31
|
+
GlobalKeyValueStore
|
|
32
|
+
]
|
|
31
33
|
});
|
|
34
|
+
export { KeyValueStore_KeyValueStore as KeyValueStore };
|
|
32
35
|
|
|
33
36
|
//# sourceMappingURL=KeyValueStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/keyValueStore/KeyValueStore.js","sources":["../../../src/features/keyValueStore/KeyValueStore.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { KeyValueStore as ServiceAbstraction } from \"./abstractions.js\";\nimport { GlobalKeyValueStore } from \"./abstractions.js\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\n\nclass KeyValueStoreImpl implements ServiceAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private globalStore: GlobalKeyValueStore.Interface\n ) {}\n\n async get<T = unknown>(key: string): Promise<Result<T, ServiceAbstraction.Error>> {\n const tenant = this.tenantContext.getTenant();\n return this.globalStore.get<T>(key, { scope: tenant.id });\n }\n\n async set(key: string, value: any): Promise<Result<void, ServiceAbstraction.Error>> {\n const tenant = this.tenantContext.getTenant();\n return this.globalStore.set(key, value, { scope: tenant.id });\n }\n\n async delete(key: string): Promise<Result<void, ServiceAbstraction.Error>> {\n const tenant = this.tenantContext.getTenant();\n return this.globalStore.delete(key, { scope: tenant.id });\n }\n}\n\nexport const KeyValueStore = ServiceAbstraction.createImplementation({\n implementation: KeyValueStoreImpl,\n dependencies: [TenantContext, GlobalKeyValueStore]\n});\n"],"names":["KeyValueStoreImpl","tenantContext","globalStore","key","tenant","value","KeyValueStore","ServiceAbstraction","TenantContext","GlobalKeyValueStore"],"mappings":";;AAKA,MAAMA;IACF,YACYC,aAAsC,EACtCC,WAA0C,CACpD;aAFUD,aAAa,GAAbA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,IAAiBC,GAAW,EAAgD;QAC9E,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAID,KAAK;YAAE,OAAOC,OAAO,EAAE;QAAC;IAC3D;IAEA,MAAM,IAAID,GAAW,EAAEE,KAAU,EAAmD;QAChF,MAAMD,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAACD,KAAKE,OAAO;YAAE,OAAOD,OAAO,EAAE;QAAC;IAC/D;IAEA,MAAM,OAAOD,GAAW,EAAmD;QACvE,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAACD,KAAK;YAAE,OAAOC,OAAO,EAAE;QAAC;IAC3D;AACJ;AAEO,MAAME,8BAAgBC,cAAAA,oBAAuC,CAAC;IACjE,gBAAgBP;IAChB,cAAc;QAACQ;QAAeC;KAAoB;AACtD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
|
-
import { KeyValueStorageOperations, KeyValueStoreRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
2
|
+
import { KeyValueStorageOperations, KeyValueStoreRepository as RepositoryAbstraction, type IKeyValueStoreSetOptions } from "./abstractions.js";
|
|
3
3
|
/**
|
|
4
4
|
* KeyValueStoreRepository implementation.
|
|
5
5
|
*
|
|
@@ -10,7 +10,7 @@ declare class KeyValueStoreRepositoryImpl implements RepositoryAbstraction.Inter
|
|
|
10
10
|
private storageOperations;
|
|
11
11
|
constructor(storageOperations: KeyValueStorageOperations.Interface);
|
|
12
12
|
get<T = unknown>(key: string, scope: string): Promise<Result<T, RepositoryAbstraction.Error>>;
|
|
13
|
-
set(key: string, value: any, scope: string): Promise<Result<void, RepositoryAbstraction.Error>>;
|
|
13
|
+
set(key: string, value: any, scope: string, options?: IKeyValueStoreSetOptions): Promise<Result<void, RepositoryAbstraction.Error>>;
|
|
14
14
|
delete(key: string, scope: string): Promise<Result<void, RepositoryAbstraction.Error>>;
|
|
15
15
|
}
|
|
16
16
|
export declare const KeyValueStoreRepository: import("@webiny/di").Implementation<typeof KeyValueStoreRepositoryImpl>;
|
|
@@ -1,50 +1,43 @@
|
|
|
1
|
-
import { createImplementation } from "@webiny/feature/api";
|
|
2
|
-
import {
|
|
3
|
-
import { KeyValueStorageOperations, KeyValueStoreRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
1
|
+
import { Result, createImplementation } from "@webiny/feature/api";
|
|
2
|
+
import { KeyValueStorageOperations, KeyValueStoreRepository } from "./abstractions.js";
|
|
4
3
|
import { KeyNotFoundError, KeyValueStorageError } from "./errors.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* KeyValueStoreRepository implementation.
|
|
8
|
-
*
|
|
9
|
-
* This repository passes key and scope separately to storage operations.
|
|
10
|
-
* The storage layer is responsible for handling scope-based partitioning.
|
|
11
|
-
*/
|
|
12
4
|
class KeyValueStoreRepositoryImpl {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return Result.fail(new KeyValueStorageError(error));
|
|
5
|
+
constructor(storageOperations){
|
|
6
|
+
this.storageOperations = storageOperations;
|
|
7
|
+
}
|
|
8
|
+
async get(key, scope) {
|
|
9
|
+
try {
|
|
10
|
+
const record = await this.storageOperations.get(key, scope);
|
|
11
|
+
if (!record) return Result.fail(new KeyNotFoundError(key));
|
|
12
|
+
return Result.ok(record.value);
|
|
13
|
+
} catch (error) {
|
|
14
|
+
return Result.fail(new KeyValueStorageError(error));
|
|
15
|
+
}
|
|
25
16
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
17
|
+
async set(key, value, scope, options) {
|
|
18
|
+
try {
|
|
19
|
+
await this.storageOperations.set(key, value, scope, options);
|
|
20
|
+
return Result.ok();
|
|
21
|
+
} catch (error) {
|
|
22
|
+
return Result.fail(new KeyValueStorageError(error));
|
|
23
|
+
}
|
|
33
24
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
25
|
+
async delete(key, scope) {
|
|
26
|
+
try {
|
|
27
|
+
await this.storageOperations.delete(key, scope);
|
|
28
|
+
return Result.ok();
|
|
29
|
+
} catch (error) {
|
|
30
|
+
return Result.fail(new KeyValueStorageError(error));
|
|
31
|
+
}
|
|
41
32
|
}
|
|
42
|
-
}
|
|
43
33
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
const KeyValueStoreRepository_KeyValueStoreRepository = createImplementation({
|
|
35
|
+
abstraction: KeyValueStoreRepository,
|
|
36
|
+
implementation: KeyValueStoreRepositoryImpl,
|
|
37
|
+
dependencies: [
|
|
38
|
+
KeyValueStorageOperations
|
|
39
|
+
]
|
|
48
40
|
});
|
|
41
|
+
export { KeyValueStoreRepository_KeyValueStoreRepository as KeyValueStoreRepository };
|
|
49
42
|
|
|
50
43
|
//# sourceMappingURL=KeyValueStoreRepository.js.map
|