@webiny/api-core 6.0.0-rc.7 → 6.1.0-beta.0
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/domain/security/ApiToken.d.ts +1 -0
- package/domain/security/ApiToken.js +1 -0
- package/domain/security/ApiToken.js.map +1 -1
- package/exports/api/security.d.ts +2 -0
- package/exports/api/security.js +2 -0
- package/exports/api/security.js.map +1 -1
- package/features/buildParams/abstractions.d.ts +2 -0
- package/features/buildParams/abstractions.js +2 -0
- package/features/buildParams/abstractions.js.map +1 -1
- package/features/eventPublisher/abstractions.d.ts +2 -0
- package/features/eventPublisher/abstractions.js +3 -0
- package/features/eventPublisher/abstractions.js.map +1 -1
- package/features/keyValueStore/abstractions.d.ts +4 -0
- package/features/keyValueStore/abstractions.js +4 -0
- package/features/keyValueStore/abstractions.js.map +1 -1
- package/features/logger/abstractions.d.ts +1 -0
- package/features/logger/abstractions.js +1 -0
- package/features/logger/abstractions.js.map +1 -1
- package/features/security/IdentityContext/abstractions.d.ts +1 -0
- package/features/security/IdentityContext/abstractions.js +1 -0
- package/features/security/IdentityContext/abstractions.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +1 -1
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/CreateApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/events.d.ts +2 -0
- package/features/security/apiKeys/CreateApiKey/events.js +4 -0
- package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/DeleteApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/events.d.ts +2 -0
- package/features/security/apiKeys/DeleteApiKey/events.js +4 -0
- package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
- package/features/security/apiKeys/GetApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +1 -1
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/abstractions.d.ts +1 -0
- package/features/security/apiKeys/ListApiKeys/abstractions.js +1 -0
- package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +1 -1
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/UpdateApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/events.d.ts +2 -0
- package/features/security/apiKeys/UpdateApiKey/events.js +4 -0
- package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/shared/abstractions.d.ts +5 -2
- package/features/security/apiKeys/shared/abstractions.js +3 -0
- package/features/security/apiKeys/shared/abstractions.js.map +1 -1
- package/features/security/apiKeys/shared/schemas.d.ts +10 -71
- package/features/security/apiKeys/shared/schemas.js +4 -4
- package/features/security/apiKeys/shared/schemas.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/abstractions.d.ts +1 -0
- package/features/security/authentication/AuthenticationContext/abstractions.js +1 -0
- package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/events.d.ts +2 -0
- package/features/security/authentication/AuthenticationContext/events.js +4 -0
- package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
- package/features/security/authentication/Authenticator/abstractions.d.ts +1 -0
- package/features/security/authentication/Authenticator/abstractions.js +1 -0
- package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/abstractions.d.ts +2 -0
- package/features/security/authorization/AuthorizationContext/abstractions.js +2 -0
- package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
- package/features/security/authorization/Authorizer/abstractions.d.ts +1 -0
- package/features/security/authorization/Authorizer/abstractions.js +1 -0
- package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
- package/features/security/login/abstractions.d.ts +1 -0
- package/features/security/login/abstractions.js +2 -0
- package/features/security/login/abstractions.js.map +1 -1
- package/features/security/roles/CreateRole/CreateRoleUseCase.d.ts +1 -3
- package/features/security/roles/CreateRole/CreateRoleUseCase.js +3 -7
- package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
- package/features/security/roles/CreateRole/abstractions.d.ts +1 -0
- package/features/security/roles/CreateRole/abstractions.js +1 -0
- package/features/security/roles/CreateRole/abstractions.js.map +1 -1
- package/features/security/roles/CreateRole/events.d.ts +2 -0
- package/features/security/roles/CreateRole/events.js +4 -0
- package/features/security/roles/CreateRole/events.js.map +1 -1
- package/features/security/roles/CreateRole/schema.d.ts +2 -20
- package/features/security/roles/CreateRole/schema.js +2 -2
- package/features/security/roles/CreateRole/schema.js.map +1 -1
- package/features/security/roles/DeleteRole/abstractions.d.ts +1 -0
- package/features/security/roles/DeleteRole/abstractions.js +1 -0
- package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
- package/features/security/roles/DeleteRole/events.d.ts +2 -0
- package/features/security/roles/DeleteRole/events.js +4 -0
- package/features/security/roles/DeleteRole/events.js.map +1 -1
- package/features/security/roles/GetRole/abstractions.d.ts +1 -0
- package/features/security/roles/GetRole/abstractions.js +1 -0
- package/features/security/roles/GetRole/abstractions.js.map +1 -1
- package/features/security/roles/ListRoles/abstractions.d.ts +1 -0
- package/features/security/roles/ListRoles/abstractions.js +1 -0
- package/features/security/roles/ListRoles/abstractions.js.map +1 -1
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +1 -1
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
- package/features/security/roles/UpdateRole/abstractions.d.ts +1 -0
- package/features/security/roles/UpdateRole/abstractions.js +1 -0
- package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
- package/features/security/roles/UpdateRole/events.d.ts +2 -0
- package/features/security/roles/UpdateRole/events.js +4 -0
- package/features/security/roles/UpdateRole/events.js.map +1 -1
- package/features/security/roles/UpdateRole/schema.d.ts +2 -18
- package/features/security/roles/UpdateRole/schema.js +2 -2
- package/features/security/roles/UpdateRole/schema.js.map +1 -1
- package/features/security/roles/feature.js +2 -0
- package/features/security/roles/feature.js.map +1 -1
- package/features/security/roles/shared/RoleProvider.d.ts +13 -0
- package/features/security/roles/shared/RoleProvider.js +29 -0
- package/features/security/roles/shared/RoleProvider.js.map +1 -0
- package/features/security/roles/shared/RolesRepository.d.ts +3 -1
- package/features/security/roles/shared/RolesRepository.js +19 -18
- package/features/security/roles/shared/RolesRepository.js.map +1 -1
- package/features/security/roles/shared/abstractions.d.ts +19 -0
- package/features/security/roles/shared/abstractions.js +3 -0
- package/features/security/roles/shared/abstractions.js.map +1 -1
- package/features/security/shared/abstractions.d.ts +5 -14
- package/features/security/shared/abstractions.js +3 -16
- package/features/security/shared/abstractions.js.map +1 -1
- package/features/security/teams/CreateTeam/CreateTeamUseCase.d.ts +1 -3
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js +3 -7
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
- package/features/security/teams/CreateTeam/abstractions.d.ts +1 -0
- package/features/security/teams/CreateTeam/abstractions.js +1 -0
- package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
- package/features/security/teams/CreateTeam/events.d.ts +2 -0
- package/features/security/teams/CreateTeam/events.js +4 -0
- package/features/security/teams/CreateTeam/events.js.map +1 -1
- package/features/security/teams/CreateTeam/schema.d.ts +2 -12
- package/features/security/teams/DeleteTeam/abstractions.d.ts +1 -0
- package/features/security/teams/DeleteTeam/abstractions.js +1 -0
- package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
- package/features/security/teams/DeleteTeam/events.d.ts +2 -0
- package/features/security/teams/DeleteTeam/events.js +4 -0
- package/features/security/teams/DeleteTeam/events.js.map +1 -1
- package/features/security/teams/GetTeam/abstractions.d.ts +1 -0
- package/features/security/teams/GetTeam/abstractions.js +1 -0
- package/features/security/teams/GetTeam/abstractions.js.map +1 -1
- package/features/security/teams/ListTeams/abstractions.d.ts +1 -0
- package/features/security/teams/ListTeams/abstractions.js +1 -0
- package/features/security/teams/ListTeams/abstractions.js.map +1 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +1 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
- package/features/security/teams/UpdateTeam/abstractions.d.ts +1 -0
- package/features/security/teams/UpdateTeam/abstractions.js +1 -0
- package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
- package/features/security/teams/UpdateTeam/events.d.ts +2 -0
- package/features/security/teams/UpdateTeam/events.js +4 -0
- package/features/security/teams/UpdateTeam/events.js.map +1 -1
- package/features/security/teams/UpdateTeam/schema.d.ts +2 -10
- package/features/security/teams/feature.js +6 -0
- package/features/security/teams/feature.js.map +1 -1
- package/features/security/teams/shared/TeamProvider.d.ts +13 -0
- package/features/security/teams/shared/TeamProvider.js +29 -0
- package/features/security/teams/shared/TeamProvider.js.map +1 -0
- package/features/security/teams/shared/TeamsRepository.js +20 -18
- package/features/security/teams/shared/TeamsRepository.js.map +1 -1
- package/features/security/teams/shared/abstractions.d.ts +18 -0
- package/features/security/teams/shared/abstractions.js +3 -0
- package/features/security/teams/shared/abstractions.js.map +1 -1
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.d.ts +17 -0
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +76 -0
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -0
- package/features/security/utils/verifyJwtUsingJwk.d.ts +2 -4
- package/features/security/utils/verifyJwtUsingJwk.js +1 -1
- package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
- package/features/system/InstallSystem/abstractions.d.ts +2 -3
- package/features/system/InstallSystem/abstractions.js +2 -3
- package/features/system/InstallSystem/abstractions.js.map +1 -1
- package/features/task/TaskController/abstractions.d.ts +1 -0
- package/features/task/TaskController/abstractions.js +1 -0
- package/features/task/TaskController/abstractions.js.map +1 -1
- package/features/task/TaskDefinition/abstractions.d.ts +1 -0
- package/features/task/TaskDefinition/abstractions.js +1 -0
- package/features/task/TaskDefinition/abstractions.js.map +1 -1
- package/features/task/TaskService/abstractions.d.ts +1 -0
- package/features/task/TaskService/abstractions.js +1 -0
- package/features/task/TaskService/abstractions.js.map +1 -1
- package/features/tenancy/CreateTenant/abstractions.d.ts +5 -3
- package/features/tenancy/CreateTenant/abstractions.js +5 -3
- package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
- package/features/tenancy/DeleteTenant/abstractions.d.ts +5 -0
- package/features/tenancy/DeleteTenant/abstractions.js +5 -0
- package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
- package/features/tenancy/GetTenantById/abstractions.d.ts +3 -0
- package/features/tenancy/GetTenantById/abstractions.js +3 -9
- package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
- package/features/tenancy/InstallTenant/abstractions.d.ts +3 -9
- package/features/tenancy/InstallTenant/abstractions.js +3 -12
- package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
- package/features/tenancy/TenantContext/abstractions.d.ts +1 -0
- package/features/tenancy/TenantContext/abstractions.js +1 -0
- package/features/tenancy/TenantContext/abstractions.js.map +1 -1
- package/features/tenancy/UpdateTenant/abstractions.d.ts +5 -0
- package/features/tenancy/UpdateTenant/abstractions.js +5 -0
- package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
- package/features/users/CreateUser/CreateUserUseCase.js +1 -1
- package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
- package/features/users/CreateUser/abstractions.d.ts +1 -0
- package/features/users/CreateUser/abstractions.js +1 -1
- package/features/users/CreateUser/abstractions.js.map +1 -1
- package/features/users/CreateUser/events.d.ts +2 -0
- package/features/users/CreateUser/events.js +4 -0
- package/features/users/CreateUser/events.js.map +1 -1
- package/features/users/CreateUser/schema.d.ts +4 -36
- package/features/users/DeleteUser/abstractions.d.ts +1 -0
- package/features/users/DeleteUser/abstractions.js +1 -1
- package/features/users/DeleteUser/abstractions.js.map +1 -1
- package/features/users/DeleteUser/events.d.ts +2 -0
- package/features/users/DeleteUser/events.js +4 -0
- package/features/users/DeleteUser/events.js.map +1 -1
- package/features/users/GetUser/abstractions.d.ts +1 -0
- package/features/users/GetUser/abstractions.js +1 -1
- package/features/users/GetUser/abstractions.js.map +1 -1
- package/features/users/ListUserTeams/abstractions.d.ts +1 -0
- package/features/users/ListUserTeams/abstractions.js +1 -1
- package/features/users/ListUserTeams/abstractions.js.map +1 -1
- package/features/users/ListUsers/abstractions.d.ts +1 -0
- package/features/users/ListUsers/abstractions.js +1 -1
- package/features/users/ListUsers/abstractions.js.map +1 -1
- package/features/users/UpdateUser/UpdateUserUseCase.js +1 -1
- package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
- package/features/users/UpdateUser/abstractions.d.ts +1 -0
- package/features/users/UpdateUser/abstractions.js +1 -1
- package/features/users/UpdateUser/abstractions.js.map +1 -1
- package/features/users/UpdateUser/events.d.ts +2 -0
- package/features/users/UpdateUser/events.js +4 -0
- package/features/users/UpdateUser/events.js.map +1 -1
- package/features/users/UpdateUser/schema.d.ts +4 -30
- package/features/users/shared/abstractions.d.ts +1 -0
- package/features/users/shared/abstractions.js +1 -1
- package/features/users/shared/abstractions.js.map +1 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +0 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
- package/graphql/security/NotAuthorizedResponse.d.ts +1 -0
- package/graphql/security/NotAuthorizedResponse.js +1 -0
- package/graphql/security/NotAuthorizedResponse.js.map +1 -1
- package/idp/abstractions.d.ts +4 -0
- package/idp/abstractions.js +4 -0
- package/idp/abstractions.js.map +1 -1
- package/legacy/security/createSecurityContext.js +0 -11
- package/legacy/security/createSecurityContext.js.map +1 -1
- package/models/base/BaseModel.js +2 -2
- package/models/base/BaseModel.js.map +1 -1
- package/models/base/ModelBuilder.d.ts +2 -2
- package/models/base/ModelBuilder.js +21 -2
- package/models/base/ModelBuilder.js.map +1 -1
- package/models/cms/FieldBuilder.d.ts +3 -2
- package/models/cms/FieldBuilder.js +12 -17
- package/models/cms/FieldBuilder.js.map +1 -1
- package/models/cms/FieldBuilderRegistry.d.ts +1 -1
- package/models/cms/FieldBuilderRegistry.js.map +1 -1
- package/models/cms/FieldDefinitionsBuilder.d.ts +1 -0
- package/models/cms/FieldDefinitionsBuilder.js +13 -15
- package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
- package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
- package/models/cms/abstractions.d.ts +1 -1
- package/models/cms/abstractions.js.map +1 -1
- package/models/cms/fieldsBuilder.md +1 -1
- package/models/simple/Page/abstractions.d.ts +1 -11
- package/package.json +20 -20
- package/types/security.d.ts +13 -10
- package/types/security.js.map +1 -1
- package/features/security/shared/abstractions.ts.bak +0 -52
- package/legacy/security/plugins/SecurityRolePlugin.d.ts +0 -16
- package/legacy/security/plugins/SecurityRolePlugin.js +0 -33
- package/legacy/security/plugins/SecurityRolePlugin.js.map +0 -1
- package/legacy/security/plugins/SecurityTeamPlugin.d.ts +0 -16
- package/legacy/security/plugins/SecurityTeamPlugin.js +0 -33
- package/legacy/security/plugins/SecurityTeamPlugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createImplementation","Result","UpdateTeam","TeamsRepository","IdentityContext","EventPublisher","updateTeamValidation","TeamBeforeUpdateEvent","TeamAfterUpdateEvent","NotAuthorizedError","CannotUpdatePluginTeamsError","CannotUpdateSystemTeamsError","TeamValidationError","UpdateTeamUseCase","constructor","repository","identityContext","eventPublisher","execute","id","input","hasPermission","getPermission","fail","validation","safeParse","success","error","
|
|
1
|
+
{"version":3,"names":["createImplementation","Result","UpdateTeam","TeamsRepository","IdentityContext","EventPublisher","updateTeamValidation","TeamBeforeUpdateEvent","TeamAfterUpdateEvent","NotAuthorizedError","CannotUpdatePluginTeamsError","CannotUpdateSystemTeamsError","TeamValidationError","UpdateTeamUseCase","constructor","repository","identityContext","eventPublisher","execute","id","input","hasPermission","getPermission","fail","validation","safeParse","success","error","issues","message","existingResult","get","isFail","existingTeam","value","system","plugin","updatedTeam","data","publish","original","updated","result","update","ok","UpdateTeamUseCaseImpl","abstraction","implementation","dependencies"],"sources":["UpdateTeamUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { UpdateTeam } from \"./abstractions.js\";\nimport { TeamsRepository } from \"../shared/abstractions.js\";\nimport { IdentityContext } from \"../../IdentityContext/abstractions.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { updateTeamValidation } from \"./schema.js\";\nimport { TeamBeforeUpdateEvent, TeamAfterUpdateEvent } from \"./events.js\";\nimport type { Team, UpdateTeamInput } from \"../shared/types.js\";\nimport {\n NotAuthorizedError,\n CannotUpdatePluginTeamsError,\n CannotUpdateSystemTeamsError,\n TeamValidationError\n} from \"../shared/errors.js\";\n\nexport class UpdateTeamUseCase {\n private repository: TeamsRepository.Interface;\n private identityContext: IdentityContext.Interface;\n private eventPublisher: EventPublisher.Interface;\n\n constructor(\n repository: TeamsRepository.Interface,\n identityContext: IdentityContext.Interface,\n eventPublisher: EventPublisher.Interface\n ) {\n this.repository = repository;\n this.identityContext = identityContext;\n this.eventPublisher = eventPublisher;\n }\n\n async execute(id: string, input: UpdateTeamInput): Promise<Result<Team, UpdateTeam.Error>> {\n const hasPermission = await this.identityContext.getPermission(\"security.team\");\n if (!hasPermission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const validation = updateTeamValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new TeamValidationError(validation.error.issues[0].message));\n }\n\n const existingResult = await this.repository.get({ id });\n if (existingResult.isFail()) {\n return Result.fail(existingResult.error);\n }\n\n const existingTeam = existingResult.value;\n\n // Check if team is system team\n if (existingTeam.system) {\n return Result.fail(new CannotUpdateSystemTeamsError());\n }\n\n // Check if team is created via plugin\n if (existingTeam.plugin) {\n return Result.fail(new CannotUpdatePluginTeamsError());\n }\n\n const updatedTeam: Team = {\n ...existingTeam,\n ...validation.data\n };\n\n await this.eventPublisher.publish(\n new TeamBeforeUpdateEvent({\n original: existingTeam,\n updated: updatedTeam,\n input: validation.data\n })\n );\n\n const result = await this.repository.update(updatedTeam);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(\n new TeamAfterUpdateEvent({\n original: existingTeam,\n updated: updatedTeam,\n input: validation.data\n })\n );\n\n return Result.ok(updatedTeam);\n }\n}\n\nexport const UpdateTeamUseCaseImpl = createImplementation({\n abstraction: UpdateTeam,\n implementation: UpdateTeamUseCase,\n dependencies: [TeamsRepository, IdentityContext, EventPublisher]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ type UpdateTeamError = IUpdateTeamErrors[keyof IUpdateTeamErrors] | TeamsReposit
|
|
|
12
12
|
export interface IUpdateTeam {
|
|
13
13
|
execute(id: string, input: UpdateTeamInput): Promise<Result<Team, UpdateTeamError>>;
|
|
14
14
|
}
|
|
15
|
+
/** Update an existing team. */
|
|
15
16
|
export declare const UpdateTeam: import("@webiny/di").Abstraction<IUpdateTeam>;
|
|
16
17
|
export declare namespace UpdateTeam {
|
|
17
18
|
type Interface = IUpdateTeam;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","UpdateTeam"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team, UpdateTeamInput } from \"../shared/types.js\";\nimport { TeamsRepository } from \"../shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n CannotUpdatePluginTeamsError,\n CannotUpdateSystemTeamsError,\n TeamValidationError\n} from \"../shared/errors.js\";\n\nexport interface IUpdateTeamErrors {\n notAuthorized: NotAuthorizedError;\n cannotUpdatePlugin: CannotUpdatePluginTeamsError;\n cannotUpdateSystem: CannotUpdateSystemTeamsError;\n validation: TeamValidationError;\n}\n\ntype UpdateTeamError = IUpdateTeamErrors[keyof IUpdateTeamErrors] | TeamsRepository.Error;\n\nexport interface IUpdateTeam {\n execute(id: string, input: UpdateTeamInput): Promise<Result<Team, UpdateTeamError>>;\n}\n\nexport const UpdateTeam = createAbstraction<IUpdateTeam>(\"UpdateTeam\");\n\nexport namespace UpdateTeam {\n export type Interface = IUpdateTeam;\n export type Error = UpdateTeamError;\n}\n\nexport interface TeamBeforeUpdatePayload {\n original: Team;\n updated: Team;\n input: UpdateTeamInput;\n}\n\nexport interface TeamAfterUpdatePayload {\n original: Team;\n updated: Team;\n input: UpdateTeamInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAwBvD,OAAO,MAAMC,UAAU,GAAGD,iBAAiB,CAAc,YAAY,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createAbstraction","UpdateTeam"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team, UpdateTeamInput } from \"../shared/types.js\";\nimport { TeamsRepository } from \"../shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n CannotUpdatePluginTeamsError,\n CannotUpdateSystemTeamsError,\n TeamValidationError\n} from \"../shared/errors.js\";\n\nexport interface IUpdateTeamErrors {\n notAuthorized: NotAuthorizedError;\n cannotUpdatePlugin: CannotUpdatePluginTeamsError;\n cannotUpdateSystem: CannotUpdateSystemTeamsError;\n validation: TeamValidationError;\n}\n\ntype UpdateTeamError = IUpdateTeamErrors[keyof IUpdateTeamErrors] | TeamsRepository.Error;\n\nexport interface IUpdateTeam {\n execute(id: string, input: UpdateTeamInput): Promise<Result<Team, UpdateTeamError>>;\n}\n\n/** Update an existing team. */\nexport const UpdateTeam = createAbstraction<IUpdateTeam>(\"UpdateTeam\");\n\nexport namespace UpdateTeam {\n export type Interface = IUpdateTeam;\n export type Error = UpdateTeamError;\n}\n\nexport interface TeamBeforeUpdatePayload {\n original: Team;\n updated: Team;\n input: UpdateTeamInput;\n}\n\nexport interface TeamAfterUpdatePayload {\n original: Team;\n updated: Team;\n input: UpdateTeamInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAwBvD;AACA,OAAO,MAAMC,UAAU,GAAGD,iBAAiB,CAAc,YAAY,CAAC","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ export declare class TeamBeforeUpdateEvent extends DomainEvent<TeamBeforeUpdateP
|
|
|
5
5
|
eventType: "team.beforeUpdate";
|
|
6
6
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<TeamBeforeUpdateEvent>>;
|
|
7
7
|
}
|
|
8
|
+
/** Hook into team lifecycle before a team is updated. */
|
|
8
9
|
export declare const TeamBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<TeamBeforeUpdateEvent>>;
|
|
9
10
|
export declare namespace TeamBeforeUpdateEventHandler {
|
|
10
11
|
type Interface = IEventHandler<TeamBeforeUpdateEvent>;
|
|
@@ -14,6 +15,7 @@ export declare class TeamAfterUpdateEvent extends DomainEvent<TeamAfterUpdatePay
|
|
|
14
15
|
eventType: "team.afterUpdate";
|
|
15
16
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<TeamAfterUpdateEvent>>;
|
|
16
17
|
}
|
|
18
|
+
/** Hook into team lifecycle after a team is updated. */
|
|
17
19
|
export declare const TeamAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<TeamAfterUpdateEvent>>;
|
|
18
20
|
export declare namespace TeamAfterUpdateEventHandler {
|
|
19
21
|
type Interface = IEventHandler<TeamAfterUpdateEvent>;
|
|
@@ -6,6 +6,8 @@ export class TeamBeforeUpdateEvent extends DomainEvent {
|
|
|
6
6
|
return TeamBeforeUpdateEventHandler;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
/** Hook into team lifecycle before a team is updated. */
|
|
9
11
|
export const TeamBeforeUpdateEventHandler = createAbstraction("TeamBeforeUpdateEventHandler");
|
|
10
12
|
export class TeamAfterUpdateEvent extends DomainEvent {
|
|
11
13
|
eventType = "team.afterUpdate";
|
|
@@ -13,6 +15,8 @@ export class TeamAfterUpdateEvent extends DomainEvent {
|
|
|
13
15
|
return TeamAfterUpdateEventHandler;
|
|
14
16
|
}
|
|
15
17
|
}
|
|
18
|
+
|
|
19
|
+
/** Hook into team lifecycle after a team is updated. */
|
|
16
20
|
export const TeamAfterUpdateEventHandler = createAbstraction("TeamAfterUpdateEventHandler");
|
|
17
21
|
|
|
18
22
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","TeamBeforeUpdateEvent","eventType","getHandlerAbstraction","TeamBeforeUpdateEventHandler","TeamAfterUpdateEvent","TeamAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { TeamBeforeUpdatePayload, TeamAfterUpdatePayload } from \"./abstractions.js\";\n\nexport class TeamBeforeUpdateEvent extends DomainEvent<TeamBeforeUpdatePayload> {\n eventType = \"team.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return TeamBeforeUpdateEventHandler;\n }\n}\n\nexport const TeamBeforeUpdateEventHandler = createAbstraction<IEventHandler<TeamBeforeUpdateEvent>>(\n \"TeamBeforeUpdateEventHandler\"\n);\n\nexport namespace TeamBeforeUpdateEventHandler {\n export type Interface = IEventHandler<TeamBeforeUpdateEvent>;\n export type Event = TeamBeforeUpdateEvent;\n}\n\nexport class TeamAfterUpdateEvent extends DomainEvent<TeamAfterUpdatePayload> {\n eventType = \"team.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return TeamAfterUpdateEventHandler;\n }\n}\n\nexport const TeamAfterUpdateEventHandler = createAbstraction<IEventHandler<TeamAfterUpdateEvent>>(\n \"TeamAfterUpdateEventHandler\"\n);\n\nexport namespace TeamAfterUpdateEventHandler {\n export type Interface = IEventHandler<TeamAfterUpdateEvent>;\n export type Event = TeamAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","TeamBeforeUpdateEvent","eventType","getHandlerAbstraction","TeamBeforeUpdateEventHandler","TeamAfterUpdateEvent","TeamAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { TeamBeforeUpdatePayload, TeamAfterUpdatePayload } from \"./abstractions.js\";\n\nexport class TeamBeforeUpdateEvent extends DomainEvent<TeamBeforeUpdatePayload> {\n eventType = \"team.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return TeamBeforeUpdateEventHandler;\n }\n}\n\n/** Hook into team lifecycle before a team is updated. */\nexport const TeamBeforeUpdateEventHandler = createAbstraction<IEventHandler<TeamBeforeUpdateEvent>>(\n \"TeamBeforeUpdateEventHandler\"\n);\n\nexport namespace TeamBeforeUpdateEventHandler {\n export type Interface = IEventHandler<TeamBeforeUpdateEvent>;\n export type Event = TeamBeforeUpdateEvent;\n}\n\nexport class TeamAfterUpdateEvent extends DomainEvent<TeamAfterUpdatePayload> {\n eventType = \"team.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return TeamAfterUpdateEventHandler;\n }\n}\n\n/** Hook into team lifecycle after a team is updated. */\nexport const TeamAfterUpdateEventHandler = createAbstraction<IEventHandler<TeamAfterUpdateEvent>>(\n \"TeamAfterUpdateEventHandler\"\n);\n\nexport namespace TeamAfterUpdateEventHandler {\n export type Interface = IEventHandler<TeamAfterUpdateEvent>;\n export type Event = TeamAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -2,13 +2,5 @@ import { z } from "zod";
|
|
|
2
2
|
export declare const updateTeamValidation: z.ZodObject<{
|
|
3
3
|
name: z.ZodOptional<z.ZodString>;
|
|
4
4
|
description: z.ZodOptional<z.ZodString>;
|
|
5
|
-
roles: z.ZodOptional<z.ZodArray<z.ZodString
|
|
6
|
-
},
|
|
7
|
-
roles?: string[] | undefined;
|
|
8
|
-
name?: string | undefined;
|
|
9
|
-
description?: string | undefined;
|
|
10
|
-
}, {
|
|
11
|
-
roles?: string[] | undefined;
|
|
12
|
-
name?: string | undefined;
|
|
13
|
-
description?: string | undefined;
|
|
14
|
-
}>;
|
|
5
|
+
roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
6
|
+
}, z.core.$strip>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { TeamsRepository } from "./shared/TeamsRepository.js";
|
|
3
|
+
import { TeamProvider } from "./shared/TeamProvider.js";
|
|
4
|
+
import { TeamsRepositoryCachingDecorator } from "./shared/decorators/TeamsRepositoryCachingDecorator.js";
|
|
3
5
|
import { GetTeamFeature } from "./GetTeam/feature.js";
|
|
4
6
|
import { ListTeamsFeature } from "./ListTeams/feature.js";
|
|
5
7
|
import { CreateTeamFeature } from "./CreateTeam/feature.js";
|
|
@@ -10,6 +12,10 @@ export const TeamsFeature = createFeature({
|
|
|
10
12
|
register(container) {
|
|
11
13
|
// Register repository in singleton scope
|
|
12
14
|
container.register(TeamsRepository).inSingletonScope();
|
|
15
|
+
container.register(TeamProvider).inSingletonScope();
|
|
16
|
+
|
|
17
|
+
// Register caching decorator
|
|
18
|
+
container.registerDecorator(TeamsRepositoryCachingDecorator);
|
|
13
19
|
|
|
14
20
|
// Register all use cases
|
|
15
21
|
GetTeamFeature.register(container);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createFeature","TeamsRepository","GetTeamFeature","ListTeamsFeature","CreateTeamFeature","UpdateTeamFeature","DeleteTeamFeature","TeamsFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { TeamsRepository } from \"./shared/TeamsRepository.js\";\nimport { GetTeamFeature } from \"./GetTeam/feature.js\";\nimport { ListTeamsFeature } from \"./ListTeams/feature.js\";\nimport { CreateTeamFeature } from \"./CreateTeam/feature.js\";\nimport { UpdateTeamFeature } from \"./UpdateTeam/feature.js\";\nimport { DeleteTeamFeature } from \"./DeleteTeam/feature.js\";\n\nexport const TeamsFeature = createFeature({\n name: \"Teams\",\n register(container) {\n // Register repository in singleton scope\n container.register(TeamsRepository).inSingletonScope();\n\n // Register all use cases\n GetTeamFeature.register(container);\n ListTeamsFeature.register(container);\n CreateTeamFeature.register(container);\n UpdateTeamFeature.register(container);\n DeleteTeamFeature.register(container);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,eAAe;AACxB,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAE1B,OAAO,MAAMC,YAAY,
|
|
1
|
+
{"version":3,"names":["createFeature","TeamsRepository","TeamProvider","TeamsRepositoryCachingDecorator","GetTeamFeature","ListTeamsFeature","CreateTeamFeature","UpdateTeamFeature","DeleteTeamFeature","TeamsFeature","name","register","container","inSingletonScope","registerDecorator"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { TeamsRepository } from \"./shared/TeamsRepository.js\";\nimport { TeamProvider } from \"./shared/TeamProvider.js\";\nimport { TeamsRepositoryCachingDecorator } from \"./shared/decorators/TeamsRepositoryCachingDecorator.js\";\nimport { GetTeamFeature } from \"./GetTeam/feature.js\";\nimport { ListTeamsFeature } from \"./ListTeams/feature.js\";\nimport { CreateTeamFeature } from \"./CreateTeam/feature.js\";\nimport { UpdateTeamFeature } from \"./UpdateTeam/feature.js\";\nimport { DeleteTeamFeature } from \"./DeleteTeam/feature.js\";\n\nexport const TeamsFeature = createFeature({\n name: \"Teams\",\n register(container) {\n // Register repository in singleton scope\n container.register(TeamsRepository).inSingletonScope();\n container.register(TeamProvider).inSingletonScope();\n\n // Register caching decorator\n container.registerDecorator(TeamsRepositoryCachingDecorator);\n\n // Register all use cases\n GetTeamFeature.register(container);\n ListTeamsFeature.register(container);\n CreateTeamFeature.register(container);\n UpdateTeamFeature.register(container);\n DeleteTeamFeature.register(container);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,eAAe;AACxB,SAASC,YAAY;AACrB,SAASC,+BAA+B;AACxC,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAE1B,OAAO,MAAMC,YAAY,GAAGT,aAAa,CAAC;EACtCU,IAAI,EAAE,OAAO;EACbC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACV,eAAe,CAAC,CAACY,gBAAgB,CAAC,CAAC;IACtDD,SAAS,CAACD,QAAQ,CAACT,YAAY,CAAC,CAACW,gBAAgB,CAAC,CAAC;;IAEnD;IACAD,SAAS,CAACE,iBAAiB,CAACX,+BAA+B,CAAC;;IAE5D;IACAC,cAAc,CAACO,QAAQ,CAACC,SAAS,CAAC;IAClCP,gBAAgB,CAACM,QAAQ,CAACC,SAAS,CAAC;IACpCN,iBAAiB,CAACK,QAAQ,CAACC,SAAS,CAAC;IACrCL,iBAAiB,CAACI,QAAQ,CAACC,SAAS,CAAC;IACrCJ,iBAAiB,CAACG,QAAQ,CAACC,SAAS,CAAC;EACzC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TeamsProvider } from "../../../../features/security/shared/abstractions.js";
|
|
2
|
+
import { TeamFactory } from "./abstractions.js";
|
|
3
|
+
import type { Team } from "./types.js";
|
|
4
|
+
declare class TeamProviderImpl implements TeamsProvider.Interface {
|
|
5
|
+
private teamFactories;
|
|
6
|
+
private cache;
|
|
7
|
+
constructor(teamFactories: TeamFactory.Interface[]);
|
|
8
|
+
getTeams(): Promise<Team[]>;
|
|
9
|
+
}
|
|
10
|
+
export declare const TeamProvider: typeof TeamProviderImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/features/security/shared/abstractions.js").ITeamsProvider>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TeamsProvider } from "../../shared/abstractions.js";
|
|
2
|
+
import { TeamFactory } from "./abstractions.js";
|
|
3
|
+
class TeamProviderImpl {
|
|
4
|
+
constructor(teamFactories) {
|
|
5
|
+
this.teamFactories = teamFactories;
|
|
6
|
+
}
|
|
7
|
+
async getTeams() {
|
|
8
|
+
if (this.cache === undefined) {
|
|
9
|
+
const results = await Promise.all(this.teamFactories.map(factory => factory.execute()));
|
|
10
|
+
this.cache = results.flat().map(codeTeam => ({
|
|
11
|
+
...codeTeam,
|
|
12
|
+
id: codeTeam.slug,
|
|
13
|
+
createdOn: null,
|
|
14
|
+
createdBy: null,
|
|
15
|
+
system: codeTeam.system ?? false,
|
|
16
|
+
plugin: true
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
return this.cache;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export const TeamProvider = TeamsProvider.createImplementation({
|
|
23
|
+
implementation: TeamProviderImpl,
|
|
24
|
+
dependencies: [[TeamFactory, {
|
|
25
|
+
multiple: true
|
|
26
|
+
}]]
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=TeamProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TeamsProvider","TeamFactory","TeamProviderImpl","constructor","teamFactories","getTeams","cache","undefined","results","Promise","all","map","factory","execute","flat","codeTeam","id","slug","createdOn","createdBy","system","plugin","TeamProvider","createImplementation","implementation","dependencies","multiple"],"sources":["TeamProvider.ts"],"sourcesContent":["import { TeamsProvider } from \"~/features/security/shared/abstractions.js\";\nimport { TeamFactory } from \"./abstractions.js\";\nimport type { Team } from \"./types.js\";\n\nclass TeamProviderImpl implements TeamsProvider.Interface {\n private cache: Team[] | undefined;\n\n constructor(private teamFactories: TeamFactory.Interface[]) {}\n\n async getTeams(): Promise<Team[]> {\n if (this.cache === undefined) {\n const results = await Promise.all(this.teamFactories.map(factory => factory.execute()));\n this.cache = results.flat().map<Team>(codeTeam => ({\n ...codeTeam,\n id: codeTeam.slug,\n createdOn: null,\n createdBy: null,\n system: codeTeam.system ?? false,\n plugin: true\n }));\n }\n\n return this.cache;\n }\n}\n\nexport const TeamProvider = TeamsProvider.createImplementation({\n implementation: TeamProviderImpl,\n dependencies: [[TeamFactory, { multiple: true }]]\n});\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,WAAW;AAGpB,MAAMC,gBAAgB,CAAoC;EAGtDC,WAAWA,CAASC,aAAsC,EAAE;IAAA,KAAxCA,aAAsC,GAAtCA,aAAsC;EAAG;EAE7D,MAAMC,QAAQA,CAAA,EAAoB;IAC9B,IAAI,IAAI,CAACC,KAAK,KAAKC,SAAS,EAAE;MAC1B,MAAMC,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,IAAI,CAACN,aAAa,CAACO,GAAG,CAACC,OAAO,IAAIA,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;MACvF,IAAI,CAACP,KAAK,GAAGE,OAAO,CAACM,IAAI,CAAC,CAAC,CAACH,GAAG,CAAOI,QAAQ,KAAK;QAC/C,GAAGA,QAAQ;QACXC,EAAE,EAAED,QAAQ,CAACE,IAAI;QACjBC,SAAS,EAAE,IAAI;QACfC,SAAS,EAAE,IAAI;QACfC,MAAM,EAAEL,QAAQ,CAACK,MAAM,IAAI,KAAK;QAChCC,MAAM,EAAE;MACZ,CAAC,CAAC,CAAC;IACP;IAEA,OAAO,IAAI,CAACf,KAAK;EACrB;AACJ;AAEA,OAAO,MAAMgB,YAAY,GAAGtB,aAAa,CAACuB,oBAAoB,CAAC;EAC3DC,cAAc,EAAEtB,gBAAgB;EAChCuB,YAAY,EAAE,CAAC,CAACxB,WAAW,EAAE;IAAEyB,QAAQ,EAAE;EAAK,CAAC,CAAC;AACpD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -15,7 +15,7 @@ class TeamsRepositoryImpl {
|
|
|
15
15
|
const tenant = this.tenantContext.getTenant();
|
|
16
16
|
|
|
17
17
|
// First check plugin teams
|
|
18
|
-
const pluginTeams = await this.teamsProvider();
|
|
18
|
+
const pluginTeams = await this.teamsProvider.getTeams();
|
|
19
19
|
const pluginTeam = pluginTeams.find(t => {
|
|
20
20
|
// Match by ID or slug
|
|
21
21
|
if (params.id && t.id === params.id) {
|
|
@@ -26,12 +26,8 @@ class TeamsRepositoryImpl {
|
|
|
26
26
|
}
|
|
27
27
|
return false;
|
|
28
28
|
});
|
|
29
|
-
|
|
30
|
-
// Filter by tenant if team has one
|
|
31
29
|
if (pluginTeam) {
|
|
32
|
-
|
|
33
|
-
return Result.ok(pluginTeam);
|
|
34
|
-
}
|
|
30
|
+
return Result.ok(pluginTeam);
|
|
35
31
|
}
|
|
36
32
|
|
|
37
33
|
// Then check storage
|
|
@@ -63,13 +59,8 @@ class TeamsRepositoryImpl {
|
|
|
63
59
|
});
|
|
64
60
|
|
|
65
61
|
// Get teams from plugins
|
|
66
|
-
const pluginTeams = await this.teamsProvider();
|
|
62
|
+
const pluginTeams = await this.teamsProvider.getTeams();
|
|
67
63
|
const teamsFromPlugins = pluginTeams.filter(team => {
|
|
68
|
-
// Filter by tenant - plugin teams with no tenant or matching tenant
|
|
69
|
-
if (team.tenant && team.tenant !== tenant.id) {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
64
|
// Apply where filters if provided
|
|
74
65
|
const {
|
|
75
66
|
id_in,
|
|
@@ -92,8 +83,12 @@ class TeamsRepositoryImpl {
|
|
|
92
83
|
}
|
|
93
84
|
async create(team) {
|
|
94
85
|
try {
|
|
86
|
+
const tenant = this.tenantContext.getTenant();
|
|
95
87
|
await this.storageOperations.createTeam({
|
|
96
|
-
team
|
|
88
|
+
team: {
|
|
89
|
+
...team,
|
|
90
|
+
tenant: tenant.id
|
|
91
|
+
}
|
|
97
92
|
});
|
|
98
93
|
return Result.ok();
|
|
99
94
|
} catch (error) {
|
|
@@ -102,11 +97,14 @@ class TeamsRepositoryImpl {
|
|
|
102
97
|
}
|
|
103
98
|
async update(team) {
|
|
104
99
|
try {
|
|
105
|
-
|
|
106
|
-
|
|
100
|
+
const tenant = this.tenantContext.getTenant();
|
|
101
|
+
const teamWithTenant = {
|
|
102
|
+
...team,
|
|
103
|
+
tenant: tenant.id
|
|
104
|
+
};
|
|
107
105
|
await this.storageOperations.updateTeam({
|
|
108
|
-
team,
|
|
109
|
-
original:
|
|
106
|
+
team: teamWithTenant,
|
|
107
|
+
original: teamWithTenant
|
|
110
108
|
});
|
|
111
109
|
return Result.ok();
|
|
112
110
|
} catch (error) {
|
|
@@ -115,8 +113,12 @@ class TeamsRepositoryImpl {
|
|
|
115
113
|
}
|
|
116
114
|
async delete(team) {
|
|
117
115
|
try {
|
|
116
|
+
const tenant = this.tenantContext.getTenant();
|
|
118
117
|
await this.storageOperations.deleteTeam({
|
|
119
|
-
team
|
|
118
|
+
team: {
|
|
119
|
+
...team,
|
|
120
|
+
tenant: tenant.id
|
|
121
|
+
}
|
|
120
122
|
});
|
|
121
123
|
return Result.ok();
|
|
122
124
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createImplementation","Result","TenantContext","TeamsRepository","RepositoryAbstraction","SecurityStorageOperations","TeamsProvider","TeamNotFoundError","TeamStorageError","TeamsRepositoryImpl","constructor","tenantContext","storageOperations","teamsProvider","get","params","tenant","getTenant","pluginTeams","pluginTeam","find","t","id","slug","ok","team","getTeam","where","fail","error","list","teamsFromDatabase","listTeams","sort","teamsFromPlugins","filter","id_in","slug_in","includes","create","createTeam","update","updateTeam","original","delete","deleteTeam","abstraction","implementation","dependencies"],"sources":["TeamsRepository.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { TeamsRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport type { Team, GetTeamInput, ListTeamsInput } from \"./types.js\";\nimport {\n SecurityStorageOperations,\n TeamsProvider\n} from \"~/features/security/shared/abstractions.js\";\nimport { TeamNotFoundError, TeamStorageError } from \"./errors.js\";\n\nclass TeamsRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private storageOperations: SecurityStorageOperations.Interface,\n private teamsProvider: TeamsProvider.Interface\n ) {}\n\n async get(params: GetTeamInput): Promise<Result<Team, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // First check plugin teams\n const pluginTeams = await this.teamsProvider();\n const pluginTeam = pluginTeams.find(t => {\n // Match by ID or slug\n if (params.id && t.id === params.id) {\n return true;\n }\n\n if (params.slug && t.slug === params.slug) {\n return true;\n }\n\n return false;\n });\n\n
|
|
1
|
+
{"version":3,"names":["createImplementation","Result","TenantContext","TeamsRepository","RepositoryAbstraction","SecurityStorageOperations","TeamsProvider","TeamNotFoundError","TeamStorageError","TeamsRepositoryImpl","constructor","tenantContext","storageOperations","teamsProvider","get","params","tenant","getTenant","pluginTeams","getTeams","pluginTeam","find","t","id","slug","ok","team","getTeam","where","fail","error","list","teamsFromDatabase","listTeams","sort","teamsFromPlugins","filter","id_in","slug_in","includes","create","createTeam","update","teamWithTenant","updateTeam","original","delete","deleteTeam","abstraction","implementation","dependencies"],"sources":["TeamsRepository.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { TeamsRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport type { Team, GetTeamInput, ListTeamsInput } from \"./types.js\";\nimport {\n SecurityStorageOperations,\n TeamsProvider\n} from \"~/features/security/shared/abstractions.js\";\nimport { TeamNotFoundError, TeamStorageError } from \"./errors.js\";\n\nclass TeamsRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private storageOperations: SecurityStorageOperations.Interface,\n private teamsProvider: TeamsProvider.Interface\n ) {}\n\n async get(params: GetTeamInput): Promise<Result<Team, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // First check plugin teams\n const pluginTeams = await this.teamsProvider.getTeams();\n const pluginTeam = pluginTeams.find(t => {\n // Match by ID or slug\n if (params.id && t.id === params.id) {\n return true;\n }\n\n if (params.slug && t.slug === params.slug) {\n return true;\n }\n\n return false;\n });\n\n if (pluginTeam) {\n return Result.ok(pluginTeam);\n }\n\n // Then check storage\n const team = await this.storageOperations.getTeam({\n where: {\n ...params,\n tenant: tenant.id\n }\n });\n\n if (team) {\n return Result.ok(team);\n }\n\n return Result.fail(new TeamNotFoundError());\n } catch (error) {\n return Result.fail(new TeamStorageError(error));\n }\n }\n\n async list(params: ListTeamsInput): Promise<Result<Team[], RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // Get teams from storage\n const teamsFromDatabase = await this.storageOperations.listTeams({\n where: {\n tenant: tenant.id,\n ...params.where\n },\n sort: params.sort || [\"createdOn_ASC\"]\n });\n\n // Get teams from plugins\n const pluginTeams = await this.teamsProvider.getTeams();\n const teamsFromPlugins = pluginTeams.filter(team => {\n // Apply where filters if provided\n const { id_in, slug_in } = params.where || {};\n if (id_in && !id_in.includes(team.id)) {\n return false;\n }\n if (slug_in && !slug_in.includes(team.slug)) {\n return false;\n }\n\n return true;\n });\n\n // Plugin teams come first (they don't have createdOn), then database teams\n return Result.ok([...teamsFromPlugins, ...teamsFromDatabase]);\n } catch (error) {\n return Result.fail(new TeamStorageError(error));\n }\n }\n\n async create(team: Team): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.createTeam({ team: { ...team, tenant: tenant.id } });\n return Result.ok();\n } catch (error) {\n return Result.fail(new TeamStorageError(error));\n }\n }\n\n async update(team: Team): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n const teamWithTenant = { ...team, tenant: tenant.id };\n await this.storageOperations.updateTeam({\n team: teamWithTenant,\n original: teamWithTenant\n });\n return Result.ok();\n } catch (error) {\n return Result.fail(new TeamStorageError(error));\n }\n }\n\n async delete(team: Team): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n await this.storageOperations.deleteTeam({ team: { ...team, tenant: tenant.id } });\n return Result.ok();\n } catch (error) {\n return Result.fail(new TeamStorageError(error));\n }\n }\n}\n\nexport const TeamsRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: TeamsRepositoryImpl,\n dependencies: [TenantContext, SecurityStorageOperations, TeamsProvider]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,9 +12,27 @@ export interface ITeamsRepository {
|
|
|
12
12
|
update(data: Team): Promise<Result<void, RepositoryError>>;
|
|
13
13
|
delete(team: Team): Promise<Result<void, RepositoryError>>;
|
|
14
14
|
}
|
|
15
|
+
/** Persist and retrieve teams. */
|
|
15
16
|
export declare const TeamsRepository: import("@webiny/di").Abstraction<ITeamsRepository>;
|
|
16
17
|
export declare namespace TeamsRepository {
|
|
17
18
|
type Interface = ITeamsRepository;
|
|
18
19
|
type Error = RepositoryError;
|
|
19
20
|
}
|
|
21
|
+
export type CodeTeam = {
|
|
22
|
+
name: string;
|
|
23
|
+
slug: string;
|
|
24
|
+
description: string;
|
|
25
|
+
roles: string[];
|
|
26
|
+
system?: boolean;
|
|
27
|
+
};
|
|
28
|
+
export interface ITeamFactory {
|
|
29
|
+
execute(): Promise<CodeTeam[]>;
|
|
30
|
+
}
|
|
31
|
+
/** Provide code-defined teams. */
|
|
32
|
+
export declare const TeamFactory: import("@webiny/di").Abstraction<ITeamFactory>;
|
|
33
|
+
export declare namespace TeamFactory {
|
|
34
|
+
type Interface = ITeamFactory;
|
|
35
|
+
type Return = Promise<CodeTeam[]>;
|
|
36
|
+
type Team = CodeTeam;
|
|
37
|
+
}
|
|
20
38
|
export {};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
/** Persist and retrieve teams. */
|
|
2
3
|
export const TeamsRepository = createAbstraction("TeamsRepository");
|
|
4
|
+
/** Provide code-defined teams. */
|
|
5
|
+
export const TeamFactory = createAbstraction("TeamFactory");
|
|
3
6
|
|
|
4
7
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","TeamsRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team, GetTeamInput, ListTeamsInput } from \"./types.js\";\nimport { TeamNotFoundError, TeamStorageError } from \"./errors.js\";\n\nexport interface ITeamsRepositoryErrors {\n base: TeamNotFoundError | TeamStorageError;\n}\n\ntype RepositoryError = ITeamsRepositoryErrors[keyof ITeamsRepositoryErrors];\n\nexport interface ITeamsRepository {\n get(params: GetTeamInput): Promise<Result<Team, RepositoryError>>;\n list(params: ListTeamsInput): Promise<Result<Team[], RepositoryError>>;\n create(data: Team): Promise<Result<void, RepositoryError>>;\n update(data: Team): Promise<Result<void, RepositoryError>>;\n delete(team: Team): Promise<Result<void, RepositoryError>>;\n}\n\nexport const TeamsRepository = createAbstraction<ITeamsRepository>(\"TeamsRepository\");\n\nexport namespace TeamsRepository {\n export type Interface = ITeamsRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAmBvD,OAAO,MAAMC,eAAe,GAAGD,iBAAiB,CAAmB,iBAAiB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createAbstraction","TeamsRepository","TeamFactory"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team, GetTeamInput, ListTeamsInput } from \"./types.js\";\nimport { TeamNotFoundError, TeamStorageError } from \"./errors.js\";\n\nexport interface ITeamsRepositoryErrors {\n base: TeamNotFoundError | TeamStorageError;\n}\n\ntype RepositoryError = ITeamsRepositoryErrors[keyof ITeamsRepositoryErrors];\n\nexport interface ITeamsRepository {\n get(params: GetTeamInput): Promise<Result<Team, RepositoryError>>;\n list(params: ListTeamsInput): Promise<Result<Team[], RepositoryError>>;\n create(data: Team): Promise<Result<void, RepositoryError>>;\n update(data: Team): Promise<Result<void, RepositoryError>>;\n delete(team: Team): Promise<Result<void, RepositoryError>>;\n}\n\n/** Persist and retrieve teams. */\nexport const TeamsRepository = createAbstraction<ITeamsRepository>(\"TeamsRepository\");\n\nexport namespace TeamsRepository {\n export type Interface = ITeamsRepository;\n export type Error = RepositoryError;\n}\n\nexport type CodeTeam = {\n name: string;\n slug: string;\n description: string;\n roles: string[];\n system?: boolean;\n};\n\nexport interface ITeamFactory {\n execute(): Promise<CodeTeam[]>;\n}\n\n/** Provide code-defined teams. */\nexport const TeamFactory = createAbstraction<ITeamFactory>(\"TeamFactory\");\n\nexport namespace TeamFactory {\n export type Interface = ITeamFactory;\n export type Return = Promise<CodeTeam[]>;\n export type Team = CodeTeam;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAmBvD;AACA,OAAO,MAAMC,eAAe,GAAGD,iBAAiB,CAAmB,iBAAiB,CAAC;AAmBrF;AACA,OAAO,MAAME,WAAW,GAAGF,iBAAiB,CAAe,aAAa,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { TeamsRepository } from "../abstractions.js";
|
|
3
|
+
import type { Team, GetTeamInput, ListTeamsInput } from "../types.js";
|
|
4
|
+
declare class TeamsRepositoryCachingDecoratorImpl implements TeamsRepository.Interface {
|
|
5
|
+
private decoratee;
|
|
6
|
+
private readonly cache;
|
|
7
|
+
constructor(decoratee: TeamsRepository.Interface);
|
|
8
|
+
get(params: GetTeamInput): Promise<Result<Team, TeamsRepository.Error>>;
|
|
9
|
+
list(params: ListTeamsInput): Promise<Result<Team[], TeamsRepository.Error>>;
|
|
10
|
+
create(team: Team): Promise<Result<void, TeamsRepository.Error>>;
|
|
11
|
+
update(team: Team): Promise<Result<void, TeamsRepository.Error>>;
|
|
12
|
+
delete(team: Team): Promise<Result<void, TeamsRepository.Error>>;
|
|
13
|
+
}
|
|
14
|
+
export declare const TeamsRepositoryCachingDecorator: typeof TeamsRepositoryCachingDecoratorImpl & {
|
|
15
|
+
__abstraction: import("@webiny/di").Abstraction<import("../abstractions.js").ITeamsRepository>;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { TeamsRepository } from "../abstractions.js";
|
|
3
|
+
import { ListCache } from "../../../roles/shared/decorators/ListCache.js";
|
|
4
|
+
class TeamsRepositoryCachingDecoratorImpl {
|
|
5
|
+
cache = new ListCache();
|
|
6
|
+
constructor(decoratee) {
|
|
7
|
+
this.decoratee = decoratee;
|
|
8
|
+
}
|
|
9
|
+
async get(params) {
|
|
10
|
+
// Check cache first
|
|
11
|
+
if (this.cache.hasItems()) {
|
|
12
|
+
const cachedTeam = this.cache.getItems().find(t => {
|
|
13
|
+
if (params.id && t.id === params.id) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
if (params.slug && t.slug === params.slug) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
});
|
|
21
|
+
if (cachedTeam) {
|
|
22
|
+
return Result.ok(cachedTeam);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Delegate to decoratee
|
|
27
|
+
const result = await this.decoratee.get(params);
|
|
28
|
+
|
|
29
|
+
// Add to cache on success
|
|
30
|
+
if (result.isOk()) {
|
|
31
|
+
this.cache.addItems([result.value]);
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
async list(params) {
|
|
36
|
+
return this.decoratee.list(params);
|
|
37
|
+
}
|
|
38
|
+
async create(team) {
|
|
39
|
+
const result = await this.decoratee.create(team);
|
|
40
|
+
|
|
41
|
+
// Add to cache on success
|
|
42
|
+
if (result.isOk()) {
|
|
43
|
+
this.cache.addItems([team]);
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
async update(team) {
|
|
48
|
+
const result = await this.decoratee.update(team);
|
|
49
|
+
|
|
50
|
+
// Update in cache on success
|
|
51
|
+
if (result.isOk()) {
|
|
52
|
+
this.cache.updateItems(item => {
|
|
53
|
+
if (item.id === team.id) {
|
|
54
|
+
return team;
|
|
55
|
+
}
|
|
56
|
+
return item;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
async delete(team) {
|
|
62
|
+
const result = await this.decoratee.delete(team);
|
|
63
|
+
|
|
64
|
+
// Remove from cache on success
|
|
65
|
+
if (result.isOk()) {
|
|
66
|
+
this.cache.removeItems(item => item.id === team.id);
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export const TeamsRepositoryCachingDecorator = TeamsRepository.createDecorator({
|
|
72
|
+
decorator: TeamsRepositoryCachingDecoratorImpl,
|
|
73
|
+
dependencies: []
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=TeamsRepositoryCachingDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","TeamsRepository","ListCache","TeamsRepositoryCachingDecoratorImpl","cache","constructor","decoratee","get","params","hasItems","cachedTeam","getItems","find","t","id","slug","ok","result","isOk","addItems","value","list","create","team","update","updateItems","item","delete","removeItems","TeamsRepositoryCachingDecorator","createDecorator","decorator","dependencies"],"sources":["TeamsRepositoryCachingDecorator.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { TeamsRepository } from \"../abstractions.js\";\nimport type { Team, GetTeamInput, ListTeamsInput } from \"../types.js\";\nimport { ListCache } from \"~/features/security/roles/shared/decorators/ListCache.js\";\n\nclass TeamsRepositoryCachingDecoratorImpl implements TeamsRepository.Interface {\n private readonly cache = new ListCache<Team>();\n\n constructor(private decoratee: TeamsRepository.Interface) {}\n\n async get(params: GetTeamInput): Promise<Result<Team, TeamsRepository.Error>> {\n // Check cache first\n if (this.cache.hasItems()) {\n const cachedTeam = this.cache.getItems().find(t => {\n if (params.id && t.id === params.id) {\n return true;\n }\n if (params.slug && t.slug === params.slug) {\n return true;\n }\n return false;\n });\n\n if (cachedTeam) {\n return Result.ok(cachedTeam);\n }\n }\n\n // Delegate to decoratee\n const result = await this.decoratee.get(params);\n\n // Add to cache on success\n if (result.isOk()) {\n this.cache.addItems([result.value]);\n }\n\n return result;\n }\n\n async list(params: ListTeamsInput): Promise<Result<Team[], TeamsRepository.Error>> {\n return this.decoratee.list(params);\n }\n\n async create(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.create(team);\n\n // Add to cache on success\n if (result.isOk()) {\n this.cache.addItems([team]);\n }\n\n return result;\n }\n\n async update(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.update(team);\n\n // Update in cache on success\n if (result.isOk()) {\n this.cache.updateItems(item => {\n if (item.id === team.id) {\n return team;\n }\n return item;\n });\n }\n\n return result;\n }\n\n async delete(team: Team): Promise<Result<void, TeamsRepository.Error>> {\n const result = await this.decoratee.delete(team);\n\n // Remove from cache on success\n if (result.isOk()) {\n this.cache.removeItems(item => item.id === team.id);\n }\n\n return result;\n }\n}\n\nexport const TeamsRepositoryCachingDecorator = TeamsRepository.createDecorator({\n decorator: TeamsRepositoryCachingDecoratorImpl,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe;AAExB,SAASC,SAAS;AAElB,MAAMC,mCAAmC,CAAsC;EAC1DC,KAAK,GAAG,IAAIF,SAAS,CAAO,CAAC;EAE9CG,WAAWA,CAASC,SAAoC,EAAE;IAAA,KAAtCA,SAAoC,GAApCA,SAAoC;EAAG;EAE3D,MAAMC,GAAGA,CAACC,MAAoB,EAAgD;IAC1E;IACA,IAAI,IAAI,CAACJ,KAAK,CAACK,QAAQ,CAAC,CAAC,EAAE;MACvB,MAAMC,UAAU,GAAG,IAAI,CAACN,KAAK,CAACO,QAAQ,CAAC,CAAC,CAACC,IAAI,CAACC,CAAC,IAAI;QAC/C,IAAIL,MAAM,CAACM,EAAE,IAAID,CAAC,CAACC,EAAE,KAAKN,MAAM,CAACM,EAAE,EAAE;UACjC,OAAO,IAAI;QACf;QACA,IAAIN,MAAM,CAACO,IAAI,IAAIF,CAAC,CAACE,IAAI,KAAKP,MAAM,CAACO,IAAI,EAAE;UACvC,OAAO,IAAI;QACf;QACA,OAAO,KAAK;MAChB,CAAC,CAAC;MAEF,IAAIL,UAAU,EAAE;QACZ,OAAOV,MAAM,CAACgB,EAAE,CAACN,UAAU,CAAC;MAChC;IACJ;;IAEA;IACA,MAAMO,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACC,GAAG,CAACC,MAAM,CAAC;;IAE/C;IACA,IAAIS,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACe,QAAQ,CAAC,CAACF,MAAM,CAACG,KAAK,CAAC,CAAC;IACvC;IAEA,OAAOH,MAAM;EACjB;EAEA,MAAMI,IAAIA,CAACb,MAAsB,EAAkD;IAC/E,OAAO,IAAI,CAACF,SAAS,CAACe,IAAI,CAACb,MAAM,CAAC;EACtC;EAEA,MAAMc,MAAMA,CAACC,IAAU,EAAgD;IACnE,MAAMN,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACgB,MAAM,CAACC,IAAI,CAAC;;IAEhD;IACA,IAAIN,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACe,QAAQ,CAAC,CAACI,IAAI,CAAC,CAAC;IAC/B;IAEA,OAAON,MAAM;EACjB;EAEA,MAAMO,MAAMA,CAACD,IAAU,EAAgD;IACnE,MAAMN,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACkB,MAAM,CAACD,IAAI,CAAC;;IAEhD;IACA,IAAIN,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACqB,WAAW,CAACC,IAAI,IAAI;QAC3B,IAAIA,IAAI,CAACZ,EAAE,KAAKS,IAAI,CAACT,EAAE,EAAE;UACrB,OAAOS,IAAI;QACf;QACA,OAAOG,IAAI;MACf,CAAC,CAAC;IACN;IAEA,OAAOT,MAAM;EACjB;EAEA,MAAMU,MAAMA,CAACJ,IAAU,EAAgD;IACnE,MAAMN,MAAM,GAAG,MAAM,IAAI,CAACX,SAAS,CAACqB,MAAM,CAACJ,IAAI,CAAC;;IAEhD;IACA,IAAIN,MAAM,CAACC,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACd,KAAK,CAACwB,WAAW,CAACF,IAAI,IAAIA,IAAI,CAACZ,EAAE,KAAKS,IAAI,CAACT,EAAE,CAAC;IACvD;IAEA,OAAOG,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMY,+BAA+B,GAAG5B,eAAe,CAAC6B,eAAe,CAAC;EAC3EC,SAAS,EAAE5B,mCAAmC;EAC9C6B,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import jwt from "jsonwebtoken";
|
|
2
|
-
import {
|
|
2
|
+
import { exportSPKI, importJWK } from "jose";
|
|
3
3
|
export const verifyJwtUsingJwk = async (token, jwk) => {
|
|
4
4
|
// Casting to `any` because `jose` v5 has some incompatibilities with types.
|
|
5
5
|
// v6 works as expected, but we can't have v6 because it's ESM-only.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jwt","
|
|
1
|
+
{"version":3,"names":["jwt","exportSPKI","importJWK","verifyJwtUsingJwk","token","jwk","key","pemKey","verify"],"sources":["verifyJwtUsingJwk.ts"],"sourcesContent":["import jwt from \"jsonwebtoken\";\nimport { exportSPKI, importJWK, type JWK } from \"jose\";\n\nexport type Jwk = JWK;\n\nexport type Jwt = {\n header: jwt.JwtHeader;\n payload: jwt.JwtPayload;\n};\n\nexport const verifyJwtUsingJwk = async (token: string, jwk: Jwk) => {\n // Casting to `any` because `jose` v5 has some incompatibilities with types.\n // v6 works as expected, but we can't have v6 because it's ESM-only.\n const key = (await importJWK(jwk)) as CryptoKey;\n const pemKey = await exportSPKI(key);\n\n return jwt.verify(token, pemKey) as jwt.JwtPayload;\n};\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,cAAc;AAC9B,SAASC,UAAU,EAAEC,SAAS,QAAkB,MAAM;AAStD,OAAO,MAAMC,iBAAiB,GAAG,MAAAA,CAAOC,KAAa,EAAEC,GAAQ,KAAK;EAChE;EACA;EACA,MAAMC,GAAG,GAAI,MAAMJ,SAAS,CAACG,GAAG,CAAe;EAC/C,MAAME,MAAM,GAAG,MAAMN,UAAU,CAACK,GAAG,CAAC;EAEpC,OAAON,GAAG,CAACQ,MAAM,CAACJ,KAAK,EAAEG,MAAM,CAAC;AACpC,CAAC","ignoreList":[]}
|
|
@@ -19,14 +19,13 @@ export type InstallSystemInput = AppInstallationData[];
|
|
|
19
19
|
export interface IInstallSystemUseCase {
|
|
20
20
|
execute(input: InstallSystemInput): Promise<Result<void, IInstallSystemErrors[keyof IInstallSystemErrors]>>;
|
|
21
21
|
}
|
|
22
|
+
/** Run system-wide installation. */
|
|
22
23
|
export declare const InstallSystemUseCase: import("@webiny/di").Abstraction<IInstallSystemUseCase>;
|
|
23
24
|
export declare namespace InstallSystemUseCase {
|
|
24
25
|
type Interface = IInstallSystemUseCase;
|
|
25
26
|
type Input = InstallSystemInput;
|
|
26
27
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Event Handler Abstraction
|
|
29
|
-
*/
|
|
28
|
+
/** Hook into system lifecycle after the system is installed. */
|
|
30
29
|
export declare const SystemInstalledEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<void>>>;
|
|
31
30
|
export declare namespace SystemInstalledEventHandler {
|
|
32
31
|
type Interface = IEventHandler<DomainEvent>;
|
|
@@ -12,10 +12,9 @@ import { createAbstraction } from "@webiny/feature/api";
|
|
|
12
12
|
* Use Case Abstraction
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
/** Run system-wide installation. */
|
|
15
16
|
export const InstallSystemUseCase = createAbstraction("InstallSystemUseCase");
|
|
16
|
-
/**
|
|
17
|
-
* Event Handler Abstraction
|
|
18
|
-
*/
|
|
17
|
+
/** Hook into system lifecycle after the system is installed. */
|
|
19
18
|
export const SystemInstalledEventHandler = createAbstraction("SystemInstalledEventHandler");
|
|
20
19
|
|
|
21
20
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","InstallSystemUseCase","SystemInstalledEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { IEventHandler, DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport { InstallSystemError, SystemAlreadyInstalledError } from \"./errors.js\";\nimport {\n type AppInstallationData,\n InstallTenantUseCase\n} from \"~/features/tenancy/InstallTenant/index.js\";\nimport { CreateTenantUseCase } from \"~/features/tenancy/CreateTenant/index.js\";\n\n/**\n * Errors\n */\nexport interface IInstallSystemErrors {\n base:\n | InstallSystemError\n | SystemAlreadyInstalledError\n | CreateTenantUseCase.Errors\n | InstallTenantUseCase.Errors;\n}\n\n/**\n * Types\n */\nexport type InstallSystemInput = AppInstallationData[];\n\n/**\n * Use Case Abstraction\n */\nexport interface IInstallSystemUseCase {\n execute(\n input: InstallSystemInput\n ): Promise<Result<void, IInstallSystemErrors[keyof IInstallSystemErrors]>>;\n}\n\nexport const InstallSystemUseCase =\n createAbstraction<IInstallSystemUseCase>(\"InstallSystemUseCase\");\n\nexport namespace InstallSystemUseCase {\n export type Interface = IInstallSystemUseCase;\n export type Input = InstallSystemInput;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","InstallSystemUseCase","SystemInstalledEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { IEventHandler, DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport { InstallSystemError, SystemAlreadyInstalledError } from \"./errors.js\";\nimport {\n type AppInstallationData,\n InstallTenantUseCase\n} from \"~/features/tenancy/InstallTenant/index.js\";\nimport { CreateTenantUseCase } from \"~/features/tenancy/CreateTenant/index.js\";\n\n/**\n * Errors\n */\nexport interface IInstallSystemErrors {\n base:\n | InstallSystemError\n | SystemAlreadyInstalledError\n | CreateTenantUseCase.Errors\n | InstallTenantUseCase.Errors;\n}\n\n/**\n * Types\n */\nexport type InstallSystemInput = AppInstallationData[];\n\n/**\n * Use Case Abstraction\n */\nexport interface IInstallSystemUseCase {\n execute(\n input: InstallSystemInput\n ): Promise<Result<void, IInstallSystemErrors[keyof IInstallSystemErrors]>>;\n}\n\n/** Run system-wide installation. */\nexport const InstallSystemUseCase =\n createAbstraction<IInstallSystemUseCase>(\"InstallSystemUseCase\");\n\nexport namespace InstallSystemUseCase {\n export type Interface = IInstallSystemUseCase;\n export type Input = InstallSystemInput;\n}\n\n/** Hook into system lifecycle after the system is installed. */\nexport const SystemInstalledEventHandler = createAbstraction<IEventHandler<DomainEvent>>(\n \"SystemInstalledEventHandler\"\n);\n\nexport namespace SystemInstalledEventHandler {\n export type Interface = IEventHandler<DomainEvent>;\n export type Event = DomainEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAS/D;AACA;AACA;;AASA;AACA;AACA;;AAGA;AACA;AACA;;AAOA;AACA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;AAOpE;AACA,OAAO,MAAME,2BAA2B,GAAGF,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ import type { ITaskInput, ITaskOutput } from "../TaskDefinition/index.js";
|
|
|
7
7
|
*/
|
|
8
8
|
export interface ITaskController<I extends ITaskInput = ITaskInput, O extends ITaskOutput = ITaskOutput> {
|
|
9
9
|
}
|
|
10
|
+
/** Runtime controller providing capabilities to running tasks. */
|
|
10
11
|
export declare const TaskController: import("@webiny/di").Abstraction<ITaskController<ITaskInput, ITaskOutput>>;
|
|
11
12
|
export declare namespace TaskController {
|
|
12
13
|
type Interface<I extends ITaskInput = ITaskInput, O extends ITaskOutput = ITaskOutput> = ITaskController<I, O>;
|
|
@@ -7,6 +7,7 @@ import { createAbstraction } from "@webiny/feature/api";
|
|
|
7
7
|
* Import this from @webiny/api-core, but the full interface comes from @webiny/tasks.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
/** Runtime controller providing capabilities to running tasks. */
|
|
10
11
|
export const TaskController = createAbstraction("TaskController");
|
|
11
12
|
|
|
12
13
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","TaskController"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ITaskInput, ITaskOutput } from \"../TaskDefinition/index.js\";\n\n/**\n * TaskController provides runtime capabilities to task definitions.\n * The actual interface is defined by the tasks package implementation via module augmentation.\n *\n * Import this from @webiny/api-core, but the full interface comes from @webiny/tasks.\n */\nexport interface ITaskController<\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n I extends ITaskInput = ITaskInput,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n O extends ITaskOutput = ITaskOutput\n> {\n // Empty - augmented by tasks package\n}\n\nexport const TaskController = createAbstraction<ITaskController>(\"TaskController\");\n\nexport namespace TaskController {\n export type Interface<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskController<I, O>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAGvD;AACA;AACA;AACA;AACA;AACA;;AAUA,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAkB,gBAAgB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createAbstraction","TaskController"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ITaskInput, ITaskOutput } from \"../TaskDefinition/index.js\";\n\n/**\n * TaskController provides runtime capabilities to task definitions.\n * The actual interface is defined by the tasks package implementation via module augmentation.\n *\n * Import this from @webiny/api-core, but the full interface comes from @webiny/tasks.\n */\nexport interface ITaskController<\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n I extends ITaskInput = ITaskInput,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n O extends ITaskOutput = ITaskOutput\n> {\n // Empty - augmented by tasks package\n}\n\n/** Runtime controller providing capabilities to running tasks. */\nexport const TaskController = createAbstraction<ITaskController>(\"TaskController\");\n\nexport namespace TaskController {\n export type Interface<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskController<I, O>;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAGvD;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAkB,gBAAgB,CAAC","ignoreList":[]}
|