@webiny/api-core 6.4.11 → 6.6.0-alpha.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.d.ts +2 -2
- package/ApiCoreFeature.js +29 -5
- package/ApiCoreFeature.js.map +1 -1
- package/exports/api/security/api-key.d.ts +1 -0
- package/exports/api/security/api-key.js +1 -0
- package/exports/api.d.ts +3 -1
- package/exports/api.js +2 -1
- package/features/ai/Ai.d.ts +3 -3
- package/features/ai/Ai.js +60 -23
- package/features/ai/Ai.js.map +1 -1
- package/features/ai/AnthropicSdkFactory.js +12 -0
- package/features/ai/AnthropicSdkFactory.js.map +1 -1
- package/features/ai/OpenAiSdkFactory.js +16 -0
- package/features/ai/OpenAiSdkFactory.js.map +1 -1
- package/features/ai/TextExtractor/DefaultTextExtractor.d.ts +9 -0
- package/features/ai/TextExtractor/DefaultTextExtractor.js +28 -0
- package/features/ai/TextExtractor/DefaultTextExtractor.js.map +1 -0
- package/features/ai/TextExtractor/abstractions.d.ts +12 -0
- package/features/ai/TextExtractor/abstractions.js +5 -0
- package/features/ai/TextExtractor/abstractions.js.map +1 -0
- package/features/ai/TextExtractor/index.d.ts +3 -0
- package/features/ai/TextExtractor/index.js +2 -0
- package/features/ai/TextExtractor/parsers/docxParser.d.ts +1 -0
- package/features/ai/TextExtractor/parsers/docxParser.js +111 -0
- package/features/ai/TextExtractor/parsers/docxParser.js.map +1 -0
- package/features/ai/abstractions.d.ts +18 -7
- package/features/ai/abstractions.js +1 -2
- package/features/ai/abstractions.js.map +1 -1
- package/features/ai/events.d.ts +59 -0
- package/features/ai/events.js +41 -0
- package/features/ai/events.js.map +1 -0
- package/features/ai/feature.js +6 -2
- package/features/ai/feature.js.map +1 -1
- package/features/ai/index.d.ts +8 -2
- package/features/ai/index.js +4 -1
- package/features/ai/toolPipeline/AiOutputToolRegistry.d.ts +11 -0
- package/features/ai/toolPipeline/AiOutputToolRegistry.js +31 -0
- package/features/ai/toolPipeline/AiOutputToolRegistry.js.map +1 -0
- package/features/ai/toolPipeline/AiToolPipelineRunner.d.ts +10 -0
- package/features/ai/toolPipeline/AiToolPipelineRunner.js +36 -0
- package/features/ai/toolPipeline/AiToolPipelineRunner.js.map +1 -0
- package/features/ai/toolPipeline/abstractions.d.ts +23 -0
- package/features/ai/toolPipeline/abstractions.js +7 -0
- package/features/ai/toolPipeline/abstractions.js.map +1 -0
- package/features/ai/toolPipeline/index.d.ts +2 -0
- package/features/ai/toolPipeline/index.js +1 -0
- package/features/dateFormatter/DefaultDateFormatter.d.ts +15 -0
- package/features/dateFormatter/DefaultDateFormatter.js +20 -0
- package/features/dateFormatter/DefaultDateFormatter.js.map +1 -0
- package/features/dateFormatter/abstractions.d.ts +13 -0
- package/features/dateFormatter/abstractions.js +5 -0
- package/features/dateFormatter/abstractions.js.map +1 -0
- package/features/dateFormatter/feature.d.ts +4 -0
- package/features/dateFormatter/feature.js +11 -0
- package/features/dateFormatter/feature.js.map +1 -0
- package/features/dateFormatter/index.d.ts +3 -0
- package/features/dateFormatter/index.js +2 -0
- package/features/featureFlags/decorators/FeatureFlagsWithLicenseDecorator.d.ts +13 -0
- package/features/featureFlags/decorators/FeatureFlagsWithLicenseDecorator.js +49 -0
- package/features/featureFlags/decorators/FeatureFlagsWithLicenseDecorator.js.map +1 -0
- package/features/hashing/ScryptHasher.d.ts +11 -0
- package/features/hashing/ScryptHasher.js +74 -0
- package/features/hashing/ScryptHasher.js.map +1 -0
- package/features/hashing/abstractions.d.ts +18 -0
- package/features/hashing/abstractions.js +5 -0
- package/features/hashing/abstractions.js.map +1 -0
- package/features/hashing/feature.d.ts +4 -0
- package/features/hashing/feature.js +11 -0
- package/features/hashing/feature.js.map +1 -0
- package/features/hashing/index.d.ts +2 -0
- package/features/hashing/index.js +1 -0
- package/features/requestContext/RawAuthToken.d.ts +14 -0
- package/features/requestContext/RawAuthToken.js +19 -0
- package/features/requestContext/RawAuthToken.js.map +1 -0
- package/features/requestContext/RawTenantId.d.ts +14 -0
- package/features/requestContext/RawTenantId.js +19 -0
- package/features/requestContext/RawTenantId.js.map +1 -0
- package/features/requestContext/RequestIdentityLoader.d.ts +19 -0
- package/features/requestContext/RequestIdentityLoader.js +26 -0
- package/features/requestContext/RequestIdentityLoader.js.map +1 -0
- package/features/requestContext/RequestTenantLoader.d.ts +18 -0
- package/features/requestContext/RequestTenantLoader.js +52 -0
- package/features/requestContext/RequestTenantLoader.js.map +1 -0
- package/features/requestContext/abstractions.d.ts +53 -0
- package/features/requestContext/abstractions.js +8 -0
- package/features/requestContext/abstractions.js.map +1 -0
- package/features/requestContext/feature.d.ts +11 -0
- package/features/requestContext/feature.js +17 -0
- package/features/requestContext/feature.js.map +1 -0
- package/features/requestContext/index.d.ts +2 -0
- package/features/requestContext/index.js +2 -0
- package/features/security/IdentityContext/IdentityContext.d.ts +3 -3
- package/features/security/IdentityContext/IdentityContext.js +6 -6
- package/features/security/IdentityContext/IdentityContext.js.map +1 -1
- package/features/security/apiKeys/ApiKeyAuthenticator.d.ts +14 -0
- package/features/security/apiKeys/ApiKeyAuthenticator.js +36 -0
- package/features/security/apiKeys/ApiKeyAuthenticator.js.map +1 -0
- package/features/security/apiKeys/ApiKeyAuthorizer.d.ts +10 -0
- package/features/security/apiKeys/ApiKeyAuthorizer.js +15 -0
- package/features/security/apiKeys/ApiKeyAuthorizer.js.map +1 -0
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +11 -6
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.d.ts +1 -1
- package/features/security/apiKeys/GetApiKey/GetApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.d.ts +1 -3
- package/features/security/apiKeys/GetApiKeyBySlug/GetApiKeyBySlugUseCase.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.d.ts +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.d.ts +1 -3
- package/features/security/apiKeys/GetApiKeyByToken/GetApiKeyByTokenUseCase.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.d.ts +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +9 -3
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/feature.js +11 -2
- package/features/security/apiKeys/feature.js.map +1 -1
- package/features/security/apiKeys/shared/ApiKeyProvider.d.ts +3 -5
- package/features/security/apiKeys/shared/ApiKeyProvider.js +6 -21
- package/features/security/apiKeys/shared/ApiKeyProvider.js.map +1 -1
- package/features/security/apiKeys/shared/ApiKeysRepository.d.ts +1 -0
- package/features/security/apiKeys/shared/ApiKeysRepository.js +19 -4
- package/features/security/apiKeys/shared/ApiKeysRepository.js.map +1 -1
- package/features/security/apiKeys/shared/generateToken.d.ts +1 -1
- package/features/security/apiKeys/shared/generateToken.js.map +1 -1
- package/features/security/apiKeys/shared/schemas.d.ts +2 -2
- package/features/security/apiKeys/shared/schemas.js +2 -2
- package/features/security/apiKeys/shared/schemas.js.map +1 -1
- package/features/security/apiKeys/shared/types.d.ts +1 -1
- package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.d.ts +4 -4
- package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js +5 -5
- package/features/security/authorization/GroupsTeamsAuthorizer/GetPermissionsFromIdentity.js.map +1 -1
- package/features/security/roles/CreateRole/CreateRoleUseCase.js +11 -6
- package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
- package/features/security/roles/CreateRole/schema.d.ts +1 -1
- package/features/security/roles/CreateRole/schema.js +1 -1
- package/features/security/roles/CreateRole/schema.js.map +1 -1
- package/features/security/roles/Installer/RolesInstaller.js +0 -1
- package/features/security/roles/Installer/RolesInstaller.js.map +1 -1
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +9 -3
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
- package/features/security/roles/UpdateRole/schema.d.ts +1 -1
- package/features/security/roles/UpdateRole/schema.js +1 -1
- package/features/security/roles/UpdateRole/schema.js.map +1 -1
- package/features/security/shared/description.d.ts +4 -0
- package/features/security/shared/description.js +7 -0
- package/features/security/shared/description.js.map +1 -0
- package/features/security/shared/index.d.ts +1 -0
- package/features/security/shared/index.js +1 -0
- package/features/security/teams/CreateTeam/CreateTeamUseCase.d.ts +3 -1
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js +20 -8
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
- package/features/security/teams/CreateTeam/schema.d.ts +1 -1
- package/features/security/teams/CreateTeam/schema.js +1 -1
- package/features/security/teams/CreateTeam/schema.js.map +1 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.d.ts +3 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +20 -5
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
- package/features/security/teams/UpdateTeam/schema.d.ts +1 -1
- package/features/security/teams/UpdateTeam/schema.js +1 -1
- package/features/security/teams/UpdateTeam/schema.js.map +1 -1
- package/features/security/teams/shared/resolveRoleIdentifiers.d.ts +17 -0
- package/features/security/teams/shared/resolveRoleIdentifiers.js +32 -0
- package/features/security/teams/shared/resolveRoleIdentifiers.js.map +1 -0
- package/features/security/utils/getPermissionsFromRoles.d.ts +1 -1
- package/features/serviceDiscovery/ServiceDiscovery.d.ts +17 -0
- package/features/serviceDiscovery/ServiceDiscovery.js +22 -0
- package/features/serviceDiscovery/ServiceDiscovery.js.map +1 -0
- package/features/serviceDiscovery/__tests__/ServiceDiscovery.test.d.ts +1 -0
- package/features/serviceDiscovery/__tests__/ServiceDiscovery.test.js +111 -0
- package/features/serviceDiscovery/__tests__/ServiceDiscovery.test.js.map +1 -0
- package/features/serviceDiscovery/index.d.ts +3 -0
- package/features/serviceDiscovery/index.js +1 -0
- package/features/slugify/DefaultSlugify.d.ts +8 -0
- package/features/slugify/DefaultSlugify.js +20 -0
- package/features/slugify/DefaultSlugify.js.map +1 -0
- package/features/slugify/abstractions.d.ts +12 -0
- package/features/slugify/abstractions.js +5 -0
- package/features/slugify/abstractions.js.map +1 -0
- package/features/slugify/feature.d.ts +4 -0
- package/features/slugify/feature.js +11 -0
- package/features/slugify/feature.js.map +1 -0
- package/features/slugify/index.d.ts +3 -0
- package/features/slugify/index.js +2 -0
- package/features/storageOperations/abstractions.d.ts +21 -0
- package/features/storageOperations/abstractions.js +10 -0
- package/features/storageOperations/abstractions.js.map +1 -0
- package/features/stringFormatter/DefaultStringFormatter.d.ts +17 -0
- package/features/stringFormatter/DefaultStringFormatter.js +19 -0
- package/features/stringFormatter/DefaultStringFormatter.js.map +1 -0
- package/features/stringFormatter/abstractions.d.ts +11 -0
- package/features/stringFormatter/abstractions.js +5 -0
- package/features/stringFormatter/abstractions.js.map +1 -0
- package/features/stringFormatter/feature.d.ts +4 -0
- package/features/stringFormatter/feature.js +13 -0
- package/features/stringFormatter/feature.js.map +1 -0
- package/features/stringFormatter/index.d.ts +3 -0
- package/features/stringFormatter/index.js +2 -0
- package/features/task/TaskDefinition/abstractions.d.ts +76 -4
- package/features/task/TaskDefinition/abstractions.js +2 -1
- package/features/task/TaskDefinition/abstractions.js.map +1 -1
- package/features/tenancy/CreateTenant/CreateTenantUseCase.d.ts +1 -1
- package/features/tenancy/InstallTenant/InstallTenantUseCase.d.ts +1 -1
- package/features/tenancy/UpdateTenant/UpdateTenantUseCase.d.ts +2 -2
- package/features/users/CreateUser/decorators/CreateUserWithWcpIncrement.d.ts +1 -1
- package/features/wcp/WcpContext/WcpContext.d.ts +10 -5
- package/features/wcp/WcpContext/WcpContext.js +23 -2
- package/features/wcp/WcpContext/WcpContext.js.map +1 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.d.ts +25 -7
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +57 -25
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
- package/features/wcp/WcpContext/feature.d.ts +1 -2
- package/features/wcp/WcpContext/feature.js +2 -2
- package/features/wcp/WcpContext/feature.js.map +1 -1
- package/features/wcp/WcpContext/index.d.ts +0 -1
- package/features/wcp/WcpContext/types.d.ts +0 -4
- package/features/wcp/WcpFeature.d.ts +1 -1
- package/features/wcp/WcpFeature.js +7 -2
- package/features/wcp/WcpFeature.js.map +1 -1
- package/features/wcp/WcpLicenseLoader.d.ts +25 -0
- package/features/wcp/WcpLicenseLoader.js +58 -0
- package/features/wcp/WcpLicenseLoader.js.map +1 -0
- package/features/wcp/WcpLicenseProvider.d.ts +21 -0
- package/features/wcp/WcpLicenseProvider.js +14 -0
- package/features/wcp/WcpLicenseProvider.js.map +1 -0
- package/features/wcp/resolveWcpProjectEnvironment.d.ts +9 -0
- package/features/wcp/resolveWcpProjectEnvironment.js +23 -0
- package/features/wcp/resolveWcpProjectEnvironment.js.map +1 -0
- package/graphql/ApiCoreSchemaFactory.d.ts +15 -0
- package/graphql/ApiCoreSchemaFactory.js +52 -0
- package/graphql/ApiCoreSchemaFactory.js.map +1 -0
- package/graphql/featureFlags/FeatureFlagsSchemaFactory.d.ts +9 -0
- package/graphql/featureFlags/FeatureFlagsSchemaFactory.js +49 -0
- package/graphql/featureFlags/FeatureFlagsSchemaFactory.js.map +1 -0
- package/graphql/security/NotAuthorizedResponse.d.ts +1 -1
- package/graphql/security/NotAuthorizedResponse.js +1 -1
- package/graphql/security/NotAuthorizedResponse.js.map +1 -1
- package/graphql/security/SecuritySchemaFactory.d.ts +14 -0
- package/graphql/security/SecuritySchemaFactory.js +23 -0
- package/graphql/security/SecuritySchemaFactory.js.map +1 -0
- package/graphql/security/addApiKeySchema.d.ts +2 -0
- package/graphql/security/{apiKey.gql.js → addApiKeySchema.js} +45 -27
- package/graphql/security/addApiKeySchema.js.map +1 -0
- package/graphql/security/addIdentitySchema.d.ts +2 -0
- package/graphql/security/{identity.gql.js → addIdentitySchema.js} +52 -35
- package/graphql/security/addIdentitySchema.js.map +1 -0
- package/graphql/security/addRoleSchema.d.ts +2 -0
- package/graphql/security/addRoleSchema.js +137 -0
- package/graphql/security/addRoleSchema.js.map +1 -0
- package/graphql/security/addSecurityBaseSchema.d.ts +2 -0
- package/graphql/security/{base.gql.js → addSecurityBaseSchema.js} +14 -16
- package/graphql/security/addSecurityBaseSchema.js.map +1 -0
- package/graphql/security/addTeamSchema.d.ts +2 -0
- package/graphql/security/addTeamSchema.js +157 -0
- package/graphql/security/addTeamSchema.js.map +1 -0
- package/graphql/system/SystemSchemaFactory.d.ts +9 -0
- package/graphql/system/SystemSchemaFactory.js +66 -0
- package/graphql/system/SystemSchemaFactory.js.map +1 -0
- package/graphql/users/UsersSchemaFactory.d.ts +9 -0
- package/graphql/users/UsersSchemaFactory.js +191 -0
- package/graphql/users/UsersSchemaFactory.js.map +1 -0
- package/graphql/wcp/WcpSchemaFactory.d.ts +9 -0
- package/graphql/wcp/{graphql.js → WcpSchemaFactory.js} +28 -18
- package/graphql/wcp/WcpSchemaFactory.js.map +1 -0
- package/index.d.ts +3 -1
- package/index.js +3 -1
- package/package.json +21 -24
- package/testing/environment.d.ts +14 -0
- package/testing/environment.js +18 -0
- package/testing/environment.js.map +1 -0
- package/types/core.d.ts +17 -5
- package/types/security.d.ts +1 -7
- package/types/tenancy.d.ts +0 -17
- package/types/users.d.ts +0 -13
- package/createApiCore.d.ts +0 -7
- package/createApiCore.js +0 -22
- package/createApiCore.js.map +0 -1
- package/features/ai/AiModelRegistry.d.ts +0 -12
- package/features/ai/AiModelRegistry.js +0 -28
- package/features/ai/AiModelRegistry.js.map +0 -1
- package/graphql/security/apiKey.gql.d.ts +0 -4
- package/graphql/security/apiKey.gql.js.map +0 -1
- package/graphql/security/base.gql.d.ts +0 -4
- package/graphql/security/base.gql.js.map +0 -1
- package/graphql/security/identity.gql.d.ts +0 -4
- package/graphql/security/identity.gql.js.map +0 -1
- package/graphql/security/index.d.ts +0 -1
- package/graphql/security/index.js +0 -15
- package/graphql/security/index.js.map +0 -1
- package/graphql/security/role.gql.d.ts +0 -4
- package/graphql/security/role.gql.js +0 -106
- package/graphql/security/role.gql.js.map +0 -1
- package/graphql/security/team.gql.d.ts +0 -4
- package/graphql/security/team.gql.js +0 -119
- package/graphql/security/team.gql.js.map +0 -1
- package/graphql/system/createSystemGraphQL.d.ts +0 -2
- package/graphql/system/createSystemGraphQL.js +0 -54
- package/graphql/system/createSystemGraphQL.js.map +0 -1
- package/graphql/users/user.gql.d.ts +0 -3
- package/graphql/users/user.gql.js +0 -167
- package/graphql/users/user.gql.js.map +0 -1
- package/graphql/wcp/graphql.d.ts +0 -2
- package/graphql/wcp/graphql.js.map +0 -1
- package/legacy/security/LegacyContext.d.ts +0 -36
- package/legacy/security/LegacyContext.js +0 -152
- package/legacy/security/LegacyContext.js.map +0 -1
- package/legacy/security/createSecurityContext.d.ts +0 -3
- package/legacy/security/createSecurityContext.js +0 -10
- package/legacy/security/createSecurityContext.js.map +0 -1
- package/legacy/security/plugins/apiKeyAuthentication.d.ts +0 -7
- package/legacy/security/plugins/apiKeyAuthentication.js +0 -20
- package/legacy/security/plugins/apiKeyAuthentication.js.map +0 -1
- package/legacy/security/plugins/apiKeyAuthorization.d.ts +0 -6
- package/legacy/security/plugins/apiKeyAuthorization.js +0 -13
- package/legacy/security/plugins/apiKeyAuthorization.js.map +0 -1
- package/legacy/security/plugins/authenticateUsingCookie.d.ts +0 -5
- package/legacy/security/plugins/authenticateUsingCookie.js +0 -23
- package/legacy/security/plugins/authenticateUsingCookie.js.map +0 -1
- package/legacy/security/plugins/authenticateUsingHttpHeader.d.ts +0 -5
- package/legacy/security/plugins/authenticateUsingHttpHeader.js +0 -20
- package/legacy/security/plugins/authenticateUsingHttpHeader.js.map +0 -1
- package/legacy/security/plugins/secureHeaders.d.ts +0 -1
- package/legacy/security/plugins/secureHeaders.js +0 -30
- package/legacy/security/plugins/secureHeaders.js.map +0 -1
- package/legacy/tenancy/LegacyContext.d.ts +0 -15
- package/legacy/tenancy/LegacyContext.js +0 -57
- package/legacy/tenancy/LegacyContext.js.map +0 -1
- package/legacy/tenancy/createTenancyContext.d.ts +0 -3
- package/legacy/tenancy/createTenancyContext.js +0 -31
- package/legacy/tenancy/createTenancyContext.js.map +0 -1
- package/legacy/users/LegacyContext.d.ts +0 -13
- package/legacy/users/LegacyContext.js +0 -55
- package/legacy/users/LegacyContext.js.map +0 -1
- package/legacy/users/createAdminUsersContext.d.ts +0 -3
- package/legacy/users/createAdminUsersContext.js +0 -12
- package/legacy/users/createAdminUsersContext.js.map +0 -1
- package/legacy/wcp/LegacyWcpContext.d.ts +0 -33
- package/legacy/wcp/LegacyWcpContext.js +0 -84
- package/legacy/wcp/LegacyWcpContext.js.map +0 -1
- package/legacy/wcp/context.d.ts +0 -5
- package/legacy/wcp/context.js +0 -46
- package/legacy/wcp/context.js.map +0 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { ErrorResponse, ListErrorResponse, ListResponse, Response } from "@webiny/api-graphql/responses.js";
|
|
2
|
+
import { ListRolesUseCase } from "../../features/security/roles/ListRoles/index.js";
|
|
3
|
+
import { GetTeamUseCase } from "../../features/security/teams/GetTeam/index.js";
|
|
4
|
+
import { ListTeamsUseCase } from "../../features/security/teams/ListTeams/index.js";
|
|
5
|
+
import { CreateTeam } from "../../features/security/teams/CreateTeam/index.js";
|
|
6
|
+
import { UpdateTeam } from "../../features/security/teams/UpdateTeam/index.js";
|
|
7
|
+
import { DeleteTeam } from "../../features/security/teams/DeleteTeam/index.js";
|
|
8
|
+
const addTeamSchema = (builder)=>{
|
|
9
|
+
builder.addTypeDefs(`
|
|
10
|
+
type SecurityTeam {
|
|
11
|
+
id: ID
|
|
12
|
+
name: String
|
|
13
|
+
slug: String
|
|
14
|
+
createdOn: DateTime
|
|
15
|
+
description: String
|
|
16
|
+
roles: [SecurityRole]
|
|
17
|
+
system: Boolean!
|
|
18
|
+
plugin: Boolean
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
input SecurityTeamCreateInput {
|
|
22
|
+
name: String!
|
|
23
|
+
slug: String!
|
|
24
|
+
description: String
|
|
25
|
+
roles: [RefInput!]!
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
input SecurityTeamUpdateInput {
|
|
29
|
+
name: String
|
|
30
|
+
description: String
|
|
31
|
+
roles: [RefInput!]
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
type SecurityTeamResponse {
|
|
35
|
+
data: SecurityTeam
|
|
36
|
+
error: SecurityError
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type SecurityTeamListResponse {
|
|
40
|
+
data: [SecurityTeam]
|
|
41
|
+
error: SecurityError
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
input GetTeamWhereInput {
|
|
45
|
+
id: ID
|
|
46
|
+
slug: String
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
extend type SecurityQuery {
|
|
50
|
+
getTeam(where: GetTeamWhereInput!): SecurityTeamResponse
|
|
51
|
+
listTeams: SecurityTeamListResponse
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
extend type SecurityMutation {
|
|
55
|
+
createTeam(data: SecurityTeamCreateInput!): SecurityTeamResponse
|
|
56
|
+
updateTeam(id: ID!, data: SecurityTeamUpdateInput!): SecurityTeamResponse
|
|
57
|
+
deleteTeam(id: ID!): SecurityBooleanResponse
|
|
58
|
+
}
|
|
59
|
+
`);
|
|
60
|
+
builder.addResolver({
|
|
61
|
+
path: "SecurityTeam.roles",
|
|
62
|
+
dependencies: [
|
|
63
|
+
ListRolesUseCase
|
|
64
|
+
],
|
|
65
|
+
resolver: (useCase)=>async ({ parent })=>{
|
|
66
|
+
try {
|
|
67
|
+
const result = await useCase.execute({
|
|
68
|
+
where: {
|
|
69
|
+
id_in: parent.roles
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if (result.isFail()) throw result.error;
|
|
73
|
+
return result.value;
|
|
74
|
+
} catch (e) {
|
|
75
|
+
return new ErrorResponse(e);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
builder.addResolver({
|
|
80
|
+
path: "SecurityQuery.getTeam",
|
|
81
|
+
dependencies: [
|
|
82
|
+
GetTeamUseCase
|
|
83
|
+
],
|
|
84
|
+
resolver: (useCase)=>async ({ args })=>{
|
|
85
|
+
try {
|
|
86
|
+
const result = await useCase.execute(args.where);
|
|
87
|
+
if (result.isFail()) throw result.error;
|
|
88
|
+
return new Response(result.value);
|
|
89
|
+
} catch (e) {
|
|
90
|
+
return new ErrorResponse(e);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
builder.addResolver({
|
|
95
|
+
path: "SecurityQuery.listTeams",
|
|
96
|
+
dependencies: [
|
|
97
|
+
ListTeamsUseCase
|
|
98
|
+
],
|
|
99
|
+
resolver: (useCase)=>async ()=>{
|
|
100
|
+
try {
|
|
101
|
+
const result = await useCase.execute();
|
|
102
|
+
if (result.isFail()) throw result.error;
|
|
103
|
+
return new ListResponse(result.value);
|
|
104
|
+
} catch (e) {
|
|
105
|
+
return new ListErrorResponse(e);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
builder.addResolver({
|
|
110
|
+
path: "SecurityMutation.createTeam",
|
|
111
|
+
dependencies: [
|
|
112
|
+
CreateTeam
|
|
113
|
+
],
|
|
114
|
+
resolver: (useCase)=>async ({ args })=>{
|
|
115
|
+
try {
|
|
116
|
+
const result = await useCase.execute(args.data);
|
|
117
|
+
if (result.isFail()) throw result.error;
|
|
118
|
+
return new Response(result.value);
|
|
119
|
+
} catch (e) {
|
|
120
|
+
return new ErrorResponse(e);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
builder.addResolver({
|
|
125
|
+
path: "SecurityMutation.updateTeam",
|
|
126
|
+
dependencies: [
|
|
127
|
+
UpdateTeam
|
|
128
|
+
],
|
|
129
|
+
resolver: (useCase)=>async ({ args })=>{
|
|
130
|
+
try {
|
|
131
|
+
const result = await useCase.execute(args.id, args.data);
|
|
132
|
+
if (result.isFail()) throw result.error;
|
|
133
|
+
return new Response(result.value);
|
|
134
|
+
} catch (e) {
|
|
135
|
+
return new ErrorResponse(e);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
builder.addResolver({
|
|
140
|
+
path: "SecurityMutation.deleteTeam",
|
|
141
|
+
dependencies: [
|
|
142
|
+
DeleteTeam
|
|
143
|
+
],
|
|
144
|
+
resolver: (useCase)=>async ({ args })=>{
|
|
145
|
+
try {
|
|
146
|
+
const result = await useCase.execute(args.id);
|
|
147
|
+
if (result.isFail()) throw result.error;
|
|
148
|
+
return new Response(true);
|
|
149
|
+
} catch (e) {
|
|
150
|
+
return new ErrorResponse(e);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
export { addTeamSchema };
|
|
156
|
+
|
|
157
|
+
//# sourceMappingURL=addTeamSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql/security/addTeamSchema.js","sources":["../../../src/graphql/security/addTeamSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n ListErrorResponse,\n ListResponse,\n Response\n} from \"@webiny/api-graphql/responses.js\";\nimport type { IGraphQLSchemaBuilder } from \"@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js\";\nimport type { Team } from \"~/types/security.js\";\nimport { ListRolesUseCase } from \"~/features/security/roles/ListRoles/index.js\";\nimport { GetTeamUseCase } from \"~/features/security/teams/GetTeam/index.js\";\nimport { ListTeamsUseCase } from \"~/features/security/teams/ListTeams/index.js\";\nimport { CreateTeam } from \"~/features/security/teams/CreateTeam/index.js\";\nimport { UpdateTeam } from \"~/features/security/teams/UpdateTeam/index.js\";\nimport { DeleteTeam } from \"~/features/security/teams/DeleteTeam/index.js\";\n\nexport const addTeamSchema = (builder: IGraphQLSchemaBuilder): void => {\n builder.addTypeDefs(/* GraphQL */ `\n type SecurityTeam {\n id: ID\n name: String\n slug: String\n createdOn: DateTime\n description: String\n roles: [SecurityRole]\n system: Boolean!\n plugin: Boolean\n }\n\n input SecurityTeamCreateInput {\n name: String!\n slug: String!\n description: String\n roles: [RefInput!]!\n }\n\n input SecurityTeamUpdateInput {\n name: String\n description: String\n roles: [RefInput!]\n }\n\n type SecurityTeamResponse {\n data: SecurityTeam\n error: SecurityError\n }\n\n type SecurityTeamListResponse {\n data: [SecurityTeam]\n error: SecurityError\n }\n\n input GetTeamWhereInput {\n id: ID\n slug: String\n }\n\n extend type SecurityQuery {\n getTeam(where: GetTeamWhereInput!): SecurityTeamResponse\n listTeams: SecurityTeamListResponse\n }\n\n extend type SecurityMutation {\n createTeam(data: SecurityTeamCreateInput!): SecurityTeamResponse\n updateTeam(id: ID!, data: SecurityTeamUpdateInput!): SecurityTeamResponse\n deleteTeam(id: ID!): SecurityBooleanResponse\n }\n `);\n\n builder.addResolver({\n path: \"SecurityTeam.roles\",\n dependencies: [ListRolesUseCase],\n resolver:\n (useCase: ListRolesUseCase.Interface) =>\n async ({ parent }: { parent: Team }) => {\n try {\n const result = await useCase.execute({ where: { id_in: parent.roles } });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n });\n\n builder.addResolver<{ where: any }>({\n path: \"SecurityQuery.getTeam\",\n dependencies: [GetTeamUseCase],\n resolver:\n (useCase: GetTeamUseCase.Interface) =>\n async ({ args }) => {\n try {\n const result = await useCase.execute(args.where);\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(result.value);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n });\n\n builder.addResolver({\n path: \"SecurityQuery.listTeams\",\n dependencies: [ListTeamsUseCase],\n resolver: (useCase: ListTeamsUseCase.Interface) => async () => {\n try {\n const result = await useCase.execute();\n if (result.isFail()) {\n throw result.error;\n }\n return new ListResponse(result.value);\n } catch (e) {\n return new ListErrorResponse(e);\n }\n }\n });\n\n builder.addResolver<{ data: any }>({\n path: \"SecurityMutation.createTeam\",\n dependencies: [CreateTeam],\n resolver:\n (useCase: CreateTeam.Interface) =>\n async ({ args }) => {\n try {\n const result = await useCase.execute(args.data);\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(result.value);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n });\n\n builder.addResolver<{ id: string; data: any }>({\n path: \"SecurityMutation.updateTeam\",\n dependencies: [UpdateTeam],\n resolver:\n (useCase: UpdateTeam.Interface) =>\n async ({ args }) => {\n try {\n const result = await useCase.execute(args.id, args.data);\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(result.value);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n });\n\n builder.addResolver<{ id: string }>({\n path: \"SecurityMutation.deleteTeam\",\n dependencies: [DeleteTeam],\n resolver:\n (useCase: DeleteTeam.Interface) =>\n async ({ args }) => {\n try {\n const result = await useCase.execute(args.id);\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n });\n};\n"],"names":["addTeamSchema","builder","ListRolesUseCase","useCase","parent","result","e","ErrorResponse","GetTeamUseCase","args","Response","ListTeamsUseCase","ListResponse","ListErrorResponse","CreateTeam","UpdateTeam","DeleteTeam"],"mappings":";;;;;;;AAeO,MAAMA,gBAAgB,CAACC;IAC1BA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkDnC,CAAC;IAEDA,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACC;SAAiB;QAChC,UACI,CAACC,UACD,OAAO,EAAEC,MAAM,EAAoB;gBAC/B,IAAI;oBACA,MAAMC,SAAS,MAAMF,QAAQ,OAAO,CAAC;wBAAE,OAAO;4BAAE,OAAOC,OAAO,KAAK;wBAAC;oBAAE;oBACtE,IAAIC,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAOA,OAAO,KAAK;gBACvB,EAAE,OAAOC,GAAG;oBACR,OAAO,IAAIC,cAAcD;gBAC7B;YACJ;IACR;IAEAL,QAAQ,WAAW,CAAiB;QAChC,MAAM;QACN,cAAc;YAACO;SAAe;QAC9B,UACI,CAACL,UACD,OAAO,EAAEM,IAAI,EAAE;gBACX,IAAI;oBACA,MAAMJ,SAAS,MAAMF,QAAQ,OAAO,CAACM,KAAK,KAAK;oBAC/C,IAAIJ,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAO,IAAIK,SAASL,OAAO,KAAK;gBACpC,EAAE,OAAOC,GAAG;oBACR,OAAO,IAAIC,cAAcD;gBAC7B;YACJ;IACR;IAEAL,QAAQ,WAAW,CAAC;QAChB,MAAM;QACN,cAAc;YAACU;SAAiB;QAChC,UAAU,CAACR,UAAwC;gBAC/C,IAAI;oBACA,MAAME,SAAS,MAAMF,QAAQ,OAAO;oBACpC,IAAIE,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAO,IAAIO,aAAaP,OAAO,KAAK;gBACxC,EAAE,OAAOC,GAAG;oBACR,OAAO,IAAIO,kBAAkBP;gBACjC;YACJ;IACJ;IAEAL,QAAQ,WAAW,CAAgB;QAC/B,MAAM;QACN,cAAc;YAACa;SAAW;QAC1B,UACI,CAACX,UACD,OAAO,EAAEM,IAAI,EAAE;gBACX,IAAI;oBACA,MAAMJ,SAAS,MAAMF,QAAQ,OAAO,CAACM,KAAK,IAAI;oBAC9C,IAAIJ,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAO,IAAIK,SAASL,OAAO,KAAK;gBACpC,EAAE,OAAOC,GAAG;oBACR,OAAO,IAAIC,cAAcD;gBAC7B;YACJ;IACR;IAEAL,QAAQ,WAAW,CAA4B;QAC3C,MAAM;QACN,cAAc;YAACc;SAAW;QAC1B,UACI,CAACZ,UACD,OAAO,EAAEM,IAAI,EAAE;gBACX,IAAI;oBACA,MAAMJ,SAAS,MAAMF,QAAQ,OAAO,CAACM,KAAK,EAAE,EAAEA,KAAK,IAAI;oBACvD,IAAIJ,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAO,IAAIK,SAASL,OAAO,KAAK;gBACpC,EAAE,OAAOC,GAAG;oBACR,OAAO,IAAIC,cAAcD;gBAC7B;YACJ;IACR;IAEAL,QAAQ,WAAW,CAAiB;QAChC,MAAM;QACN,cAAc;YAACe;SAAW;QAC1B,UACI,CAACb,UACD,OAAO,EAAEM,IAAI,EAAE;gBACX,IAAI;oBACA,MAAMJ,SAAS,MAAMF,QAAQ,OAAO,CAACM,KAAK,EAAE;oBAC5C,IAAIJ,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAO,IAAIK,SAAS;gBACxB,EAAE,OAAOJ,GAAG;oBACR,OAAO,IAAIC,cAAcD;gBAC7B;YACJ;IACR;AACJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import type { IGraphQLSchemaBuilder } from "@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js";
|
|
3
|
+
declare class SystemSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {
|
|
4
|
+
execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder>;
|
|
5
|
+
}
|
|
6
|
+
export declare const SystemSchemaFactory: typeof SystemSchemaFactoryImpl & {
|
|
7
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.core").ICoreGraphQLSchemaFactory>;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { ErrorResponse, Response } from "@webiny/api-graphql";
|
|
3
|
+
import { GetRootTenantUseCase } from "../../features/tenancy/GetRootTenant/index.js";
|
|
4
|
+
import { InstallSystemUseCase } from "../../features/system/InstallSystem/index.js";
|
|
5
|
+
class SystemSchemaFactoryImpl {
|
|
6
|
+
async execute(builder) {
|
|
7
|
+
builder.addTypeDefs(`
|
|
8
|
+
type SystemQuery {
|
|
9
|
+
isSystemInstalled: BooleanResponse
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type SystemMutation {
|
|
13
|
+
installSystem(installationInput: JSON!): BooleanResponse
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
extend type Query {
|
|
17
|
+
system: SystemQuery
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
extend type Mutation {
|
|
21
|
+
system: SystemMutation
|
|
22
|
+
}
|
|
23
|
+
`);
|
|
24
|
+
builder.addResolver({
|
|
25
|
+
path: "Query.system",
|
|
26
|
+
resolver: ()=>async ()=>({})
|
|
27
|
+
});
|
|
28
|
+
builder.addResolver({
|
|
29
|
+
path: "Mutation.system",
|
|
30
|
+
resolver: ()=>async ()=>({})
|
|
31
|
+
});
|
|
32
|
+
builder.addResolver({
|
|
33
|
+
path: "SystemQuery.isSystemInstalled",
|
|
34
|
+
dependencies: [
|
|
35
|
+
GetRootTenantUseCase
|
|
36
|
+
],
|
|
37
|
+
resolver: (getRootTenant)=>async ()=>{
|
|
38
|
+
const result = await getRootTenant.execute();
|
|
39
|
+
return new Response(result.isOk());
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
builder.addResolver({
|
|
43
|
+
path: "SystemMutation.installSystem",
|
|
44
|
+
dependencies: [
|
|
45
|
+
InstallSystemUseCase
|
|
46
|
+
],
|
|
47
|
+
resolver: (installSystem)=>async ({ args })=>{
|
|
48
|
+
const result = await installSystem.execute(args.installationInput);
|
|
49
|
+
if (result.isOk()) return new Response(true);
|
|
50
|
+
return new ErrorResponse({
|
|
51
|
+
code: result.error.code,
|
|
52
|
+
message: result.error.message,
|
|
53
|
+
data: result.error.data
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return builder;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const SystemSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({
|
|
61
|
+
implementation: SystemSchemaFactoryImpl,
|
|
62
|
+
dependencies: []
|
|
63
|
+
});
|
|
64
|
+
export { SystemSchemaFactory };
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=SystemSchemaFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql/system/SystemSchemaFactory.js","sources":["../../../src/graphql/system/SystemSchemaFactory.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport type { IGraphQLSchemaBuilder } from \"@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js\";\nimport { ErrorResponse, Response } from \"@webiny/api-graphql\";\nimport { type AppInstallationData } from \"~/features/tenancy/InstallTenant/index.js\";\nimport { GetRootTenantUseCase } from \"~/features/tenancy/GetRootTenant/index.js\";\nimport { InstallSystemUseCase } from \"~/features/system/InstallSystem/index.js\";\n\ninterface InstallTenantArgs {\n installationInput: AppInstallationData[];\n}\n\nclass SystemSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type SystemQuery {\n isSystemInstalled: BooleanResponse\n }\n\n type SystemMutation {\n installSystem(installationInput: JSON!): BooleanResponse\n }\n\n extend type Query {\n system: SystemQuery\n }\n\n extend type Mutation {\n system: SystemMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.system\",\n resolver: () => async () => ({})\n });\n\n builder.addResolver({\n path: \"Mutation.system\",\n resolver: () => async () => ({})\n });\n\n builder.addResolver({\n path: \"SystemQuery.isSystemInstalled\",\n dependencies: [GetRootTenantUseCase],\n resolver: (getRootTenant: GetRootTenantUseCase.Interface) => async () => {\n const result = await getRootTenant.execute();\n\n return new Response(result.isOk());\n }\n });\n\n builder.addResolver<InstallTenantArgs>({\n path: \"SystemMutation.installSystem\",\n dependencies: [InstallSystemUseCase],\n resolver:\n (installSystem: InstallSystemUseCase.Interface) =>\n async ({ args }) => {\n const result = await installSystem.execute(args.installationInput);\n\n if (result.isOk()) {\n return new Response(true);\n }\n\n return new ErrorResponse({\n code: result.error.code,\n message: result.error.message,\n data: result.error.data\n });\n }\n });\n\n return builder;\n }\n}\n\nexport const SystemSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({\n implementation: SystemSchemaFactoryImpl,\n dependencies: []\n});\n"],"names":["SystemSchemaFactoryImpl","builder","GetRootTenantUseCase","getRootTenant","result","Response","InstallSystemUseCase","installSystem","args","ErrorResponse","SystemSchemaFactory","CoreGraphQLSchemaFactory"],"mappings":";;;;AAWA,MAAMA;IACF,MAAM,QAAQC,OAA8B,EAAkC;QAC1EA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;QAgBnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IAAM,UAAa,EAAC;QAClC;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IAAM,UAAa,EAAC;QAClC;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAqB;YACpC,UAAU,CAACC,gBAAkD;oBACzD,MAAMC,SAAS,MAAMD,cAAc,OAAO;oBAE1C,OAAO,IAAIE,SAASD,OAAO,IAAI;gBACnC;QACJ;QAEAH,QAAQ,WAAW,CAAoB;YACnC,MAAM;YACN,cAAc;gBAACK;aAAqB;YACpC,UACI,CAACC,gBACD,OAAO,EAAEC,IAAI,EAAE;oBACX,MAAMJ,SAAS,MAAMG,cAAc,OAAO,CAACC,KAAK,iBAAiB;oBAEjE,IAAIJ,OAAO,IAAI,IACX,OAAO,IAAIC,SAAS;oBAGxB,OAAO,IAAII,cAAc;wBACrB,MAAML,OAAO,KAAK,CAAC,IAAI;wBACvB,SAASA,OAAO,KAAK,CAAC,OAAO;wBAC7B,MAAMA,OAAO,KAAK,CAAC,IAAI;oBAC3B;gBACJ;QACR;QAEA,OAAOH;IACX;AACJ;AAEO,MAAMS,sBAAsBC,yBAAyB,oBAAoB,CAAC;IAC7E,gBAAgBX;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import type { IGraphQLSchemaBuilder } from "@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js";
|
|
3
|
+
declare class UsersSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {
|
|
4
|
+
execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder>;
|
|
5
|
+
}
|
|
6
|
+
export declare const UsersSchemaFactory: typeof UsersSchemaFactoryImpl & {
|
|
7
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.core").ICoreGraphQLSchemaFactory>;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { ErrorResponse, ListErrorResponse, ListResponse, NotFoundResponse, Response } from "@webiny/api-graphql/responses.js";
|
|
3
|
+
import { GetUserUseCase } from "../../features/users/GetUser/index.js";
|
|
4
|
+
import NotAuthorizedResponse from "../security/NotAuthorizedResponse.js";
|
|
5
|
+
import { ListUsersUseCase } from "../../features/users/ListUsers/index.js";
|
|
6
|
+
import { IdentityContext } from "../../features/security/IdentityContext/abstractions.js";
|
|
7
|
+
import { ListRolesUseCase } from "../../features/security/roles/ListRoles/index.js";
|
|
8
|
+
import { ListTeamsUseCase } from "../../features/security/teams/ListTeams/index.js";
|
|
9
|
+
class UsersSchemaFactoryImpl {
|
|
10
|
+
async execute(builder) {
|
|
11
|
+
builder.addTypeDefs(`
|
|
12
|
+
type AdminUsersQuery {
|
|
13
|
+
_empty: String
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type AdminUsersMutation {
|
|
17
|
+
_empty: String
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
extend type Query {
|
|
21
|
+
adminUsers: AdminUsersQuery
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
extend type Mutation {
|
|
25
|
+
adminUsers: AdminUsersMutation
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
type AdminUsersCreatedBy {
|
|
29
|
+
id: ID
|
|
30
|
+
displayName: String
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type AdminUsersError {
|
|
34
|
+
code: String
|
|
35
|
+
message: String
|
|
36
|
+
data: JSON
|
|
37
|
+
stack: String
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type AdminUsersBooleanResponse {
|
|
41
|
+
data: Boolean
|
|
42
|
+
error: AdminUsersError
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type AdminUser {
|
|
46
|
+
id: ID!
|
|
47
|
+
displayName: String!
|
|
48
|
+
email: String!
|
|
49
|
+
|
|
50
|
+
roles: [SecurityRole]
|
|
51
|
+
firstName: String
|
|
52
|
+
lastName: String
|
|
53
|
+
avatar: JSON
|
|
54
|
+
external: Boolean
|
|
55
|
+
createdOn: DateTime
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
type AdminUsersResponse {
|
|
59
|
+
data: AdminUser
|
|
60
|
+
error: AdminUsersError
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
type AdminUsersListResponse {
|
|
64
|
+
data: [AdminUser]
|
|
65
|
+
error: AdminUsersError
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
input AdminUsersGetUserWhereInput {
|
|
69
|
+
id: ID
|
|
70
|
+
email: String
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
extend type AdminUsersQuery {
|
|
74
|
+
getUser(where: AdminUsersGetUserWhereInput): AdminUsersResponse
|
|
75
|
+
getCurrentUser: AdminUsersResponse
|
|
76
|
+
listUsers: AdminUsersListResponse
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
extend type AdminUser {
|
|
80
|
+
teams: [SecurityTeam]
|
|
81
|
+
}
|
|
82
|
+
`);
|
|
83
|
+
builder.addResolver({
|
|
84
|
+
path: "Query.adminUsers",
|
|
85
|
+
resolver: ()=>async ()=>({})
|
|
86
|
+
});
|
|
87
|
+
builder.addResolver({
|
|
88
|
+
path: "Mutation.adminUsers",
|
|
89
|
+
resolver: ()=>async ()=>({})
|
|
90
|
+
});
|
|
91
|
+
builder.addResolver({
|
|
92
|
+
path: "AdminUser.roles",
|
|
93
|
+
dependencies: [
|
|
94
|
+
ListRolesUseCase
|
|
95
|
+
],
|
|
96
|
+
resolver: (listRoles)=>async ({ parent })=>{
|
|
97
|
+
if (!parent.roles) return null;
|
|
98
|
+
const result = await listRoles.execute({
|
|
99
|
+
where: {
|
|
100
|
+
id_in: parent.roles
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
if (result.isFail()) throw result.error;
|
|
104
|
+
return result.value;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
builder.addResolver({
|
|
108
|
+
path: "AdminUser.teams",
|
|
109
|
+
dependencies: [
|
|
110
|
+
ListTeamsUseCase
|
|
111
|
+
],
|
|
112
|
+
resolver: (listTeams)=>async ({ parent })=>{
|
|
113
|
+
const hasTeams = Array.isArray(parent.teams) && parent.teams.length > 0;
|
|
114
|
+
if (!hasTeams) return [];
|
|
115
|
+
const result = await listTeams.execute({
|
|
116
|
+
where: {
|
|
117
|
+
id_in: parent.teams
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
if (result.isFail()) throw result.error;
|
|
121
|
+
return result.value;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
builder.addResolver({
|
|
125
|
+
path: "AdminUsersQuery.getUser",
|
|
126
|
+
dependencies: [
|
|
127
|
+
GetUserUseCase
|
|
128
|
+
],
|
|
129
|
+
resolver: (getUser)=>async ({ args })=>{
|
|
130
|
+
const { where } = args;
|
|
131
|
+
const userResult = await getUser.execute({
|
|
132
|
+
id: where.id,
|
|
133
|
+
email: where.email
|
|
134
|
+
});
|
|
135
|
+
if (userResult.isFail()) {
|
|
136
|
+
const error = userResult.error;
|
|
137
|
+
if ("AdminUser/NotFound" === error.code) return new NotFoundResponse(`User "${JSON.stringify(where)}" was not found!`);
|
|
138
|
+
return new ErrorResponse({
|
|
139
|
+
message: error.message,
|
|
140
|
+
code: error.code,
|
|
141
|
+
data: error.data
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return new Response(userResult.value);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
builder.addResolver({
|
|
148
|
+
path: "AdminUsersQuery.getCurrentUser",
|
|
149
|
+
dependencies: [
|
|
150
|
+
IdentityContext,
|
|
151
|
+
GetUserUseCase
|
|
152
|
+
],
|
|
153
|
+
resolver: (identityContext, getUser)=>async ()=>{
|
|
154
|
+
const identity = identityContext.getIdentity();
|
|
155
|
+
if (!identity.isAdmin()) throw new NotAuthorizedResponse();
|
|
156
|
+
const userResponse = await identityContext.withoutAuthorization(async ()=>await getUser.execute({
|
|
157
|
+
id: identity.id
|
|
158
|
+
}));
|
|
159
|
+
if (userResponse.isFail()) {
|
|
160
|
+
const error = userResponse.error;
|
|
161
|
+
if ("AdminUser/NotFound" === error.code) return new NotFoundResponse(`User with ID ${identity.id} was not found!`);
|
|
162
|
+
return new ErrorResponse({
|
|
163
|
+
message: error.message,
|
|
164
|
+
code: error.code,
|
|
165
|
+
data: error.data
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
return new Response(userResponse.value);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
builder.addResolver({
|
|
172
|
+
path: "AdminUsersQuery.listUsers",
|
|
173
|
+
dependencies: [
|
|
174
|
+
ListUsersUseCase
|
|
175
|
+
],
|
|
176
|
+
resolver: (listUsers)=>async ()=>{
|
|
177
|
+
const users = await listUsers.execute();
|
|
178
|
+
if (users.isFail()) return new ListErrorResponse(users.error);
|
|
179
|
+
return new ListResponse(users.value);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
return builder;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const UsersSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({
|
|
186
|
+
implementation: UsersSchemaFactoryImpl,
|
|
187
|
+
dependencies: []
|
|
188
|
+
});
|
|
189
|
+
export { UsersSchemaFactory };
|
|
190
|
+
|
|
191
|
+
//# sourceMappingURL=UsersSchemaFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql/users/UsersSchemaFactory.js","sources":["../../../src/graphql/users/UsersSchemaFactory.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport {\n ErrorResponse,\n ListErrorResponse,\n ListResponse,\n NotFoundResponse,\n Response\n} from \"@webiny/api-graphql/responses.js\";\nimport type { IGraphQLSchemaBuilder } from \"@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js\";\nimport type { AdminUser } from \"~/types/users.js\";\nimport { GetUserUseCase } from \"~/features/users/GetUser/index.js\";\nimport NotAuthorizedResponse from \"~/graphql/security/NotAuthorizedResponse.js\";\nimport { ListUsersUseCase } from \"~/features/users/ListUsers/index.js\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/abstractions.js\";\nimport { ListRolesUseCase } from \"~/features/security/roles/ListRoles/index.js\";\nimport { ListTeamsUseCase } from \"~/features/security/teams/ListTeams/index.js\";\n\nclass UsersSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type AdminUsersQuery {\n _empty: String\n }\n\n type AdminUsersMutation {\n _empty: String\n }\n\n extend type Query {\n adminUsers: AdminUsersQuery\n }\n\n extend type Mutation {\n adminUsers: AdminUsersMutation\n }\n\n type AdminUsersCreatedBy {\n id: ID\n displayName: String\n }\n\n type AdminUsersError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type AdminUsersBooleanResponse {\n data: Boolean\n error: AdminUsersError\n }\n\n type AdminUser {\n id: ID!\n displayName: String!\n email: String!\n\n roles: [SecurityRole]\n firstName: String\n lastName: String\n avatar: JSON\n external: Boolean\n createdOn: DateTime\n }\n\n type AdminUsersResponse {\n data: AdminUser\n error: AdminUsersError\n }\n\n type AdminUsersListResponse {\n data: [AdminUser]\n error: AdminUsersError\n }\n\n input AdminUsersGetUserWhereInput {\n id: ID\n email: String\n }\n\n extend type AdminUsersQuery {\n getUser(where: AdminUsersGetUserWhereInput): AdminUsersResponse\n getCurrentUser: AdminUsersResponse\n listUsers: AdminUsersListResponse\n }\n\n extend type AdminUser {\n teams: [SecurityTeam]\n }\n `);\n\n builder.addResolver({\n path: \"Query.adminUsers\",\n resolver: () => async () => ({})\n });\n\n builder.addResolver({\n path: \"Mutation.adminUsers\",\n resolver: () => async () => ({})\n });\n\n builder.addResolver({\n path: \"AdminUser.roles\",\n dependencies: [ListRolesUseCase],\n resolver:\n (listRoles: ListRolesUseCase.Interface) =>\n async ({ parent }: { parent: AdminUser }) => {\n if (!parent.roles) {\n return null;\n }\n\n const result = await listRoles.execute({ where: { id_in: parent.roles } });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n });\n\n builder.addResolver({\n path: \"AdminUser.teams\",\n dependencies: [ListTeamsUseCase],\n resolver:\n (listTeams: ListTeamsUseCase.Interface) =>\n async ({ parent }: { parent: AdminUser }) => {\n const hasTeams = Array.isArray(parent.teams) && parent.teams.length > 0;\n if (!hasTeams) {\n return [];\n }\n\n const result = await listTeams.execute({ where: { id_in: parent.teams } });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n }\n });\n\n builder.addResolver<{ where: any }>({\n path: \"AdminUsersQuery.getUser\",\n dependencies: [GetUserUseCase],\n resolver:\n (getUser: GetUserUseCase.Interface) =>\n async ({ args }) => {\n const { where } = args;\n const userResult = await getUser.execute({\n id: where.id,\n email: where.email\n });\n\n if (userResult.isFail()) {\n const error = userResult.error;\n if (error.code === \"AdminUser/NotFound\") {\n return new NotFoundResponse(\n `User \"${JSON.stringify(where)}\" was not found!`\n );\n }\n\n return new ErrorResponse({\n message: error.message,\n code: error.code,\n data: error.data\n });\n }\n\n return new Response(userResult.value);\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersQuery.getCurrentUser\",\n dependencies: [IdentityContext, GetUserUseCase],\n resolver:\n (identityContext: IdentityContext.Interface, getUser: GetUserUseCase.Interface) =>\n async () => {\n const identity = identityContext.getIdentity();\n\n if (!identity.isAdmin()) {\n throw new NotAuthorizedResponse();\n }\n\n // Current user might not have permissions to execute `getUser` (this method can load any user in the system),\n // but loading your own user record should be allowed. For that reason, let's temporarily disable authorization.\n const userResponse = await identityContext.withoutAuthorization(async () => {\n // Get user record using the identity ID.\n return await getUser.execute({ id: identity.id });\n });\n\n if (userResponse.isFail()) {\n const error = userResponse.error;\n if (error.code === \"AdminUser/NotFound\") {\n return new NotFoundResponse(\n `User with ID ${identity.id} was not found!`\n );\n }\n\n return new ErrorResponse({\n message: error.message,\n code: error.code,\n data: error.data\n });\n }\n\n return new Response(userResponse.value);\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersQuery.listUsers\",\n dependencies: [ListUsersUseCase],\n resolver: (listUsers: ListUsersUseCase.Interface) => async () => {\n const users = await listUsers.execute();\n\n if (users.isFail()) {\n return new ListErrorResponse(users.error);\n }\n\n return new ListResponse(users.value);\n }\n });\n\n return builder;\n }\n}\n\nexport const UsersSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({\n implementation: UsersSchemaFactoryImpl,\n dependencies: []\n});\n"],"names":["UsersSchemaFactoryImpl","builder","ListRolesUseCase","listRoles","parent","result","ListTeamsUseCase","listTeams","hasTeams","Array","GetUserUseCase","getUser","args","where","userResult","error","NotFoundResponse","JSON","ErrorResponse","Response","IdentityContext","identityContext","identity","NotAuthorizedResponse","userResponse","ListUsersUseCase","listUsers","users","ListErrorResponse","ListResponse","UsersSchemaFactory","CoreGraphQLSchemaFactory"],"mappings":";;;;;;;;AAiBA,MAAMA;IACF,MAAM,QAAQC,OAA8B,EAAkC;QAC1EA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuEnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IAAM,UAAa,EAAC;QAClC;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IAAM,UAAa,EAAC;QAClC;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAiB;YAChC,UACI,CAACC,YACD,OAAO,EAAEC,MAAM,EAAyB;oBACpC,IAAI,CAACA,OAAO,KAAK,EACb,OAAO;oBAGX,MAAMC,SAAS,MAAMF,UAAU,OAAO,CAAC;wBAAE,OAAO;4BAAE,OAAOC,OAAO,KAAK;wBAAC;oBAAE;oBACxE,IAAIC,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAOA,OAAO,KAAK;gBACvB;QACR;QAEAJ,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACK;aAAiB;YAChC,UACI,CAACC,YACD,OAAO,EAAEH,MAAM,EAAyB;oBACpC,MAAMI,WAAWC,MAAM,OAAO,CAACL,OAAO,KAAK,KAAKA,OAAO,KAAK,CAAC,MAAM,GAAG;oBACtE,IAAI,CAACI,UACD,OAAO,EAAE;oBAGb,MAAMH,SAAS,MAAME,UAAU,OAAO,CAAC;wBAAE,OAAO;4BAAE,OAAOH,OAAO,KAAK;wBAAC;oBAAE;oBACxE,IAAIC,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;oBAEtB,OAAOA,OAAO,KAAK;gBACvB;QACR;QAEAJ,QAAQ,WAAW,CAAiB;YAChC,MAAM;YACN,cAAc;gBAACS;aAAe;YAC9B,UACI,CAACC,UACD,OAAO,EAAEC,IAAI,EAAE;oBACX,MAAM,EAAEC,KAAK,EAAE,GAAGD;oBAClB,MAAME,aAAa,MAAMH,QAAQ,OAAO,CAAC;wBACrC,IAAIE,MAAM,EAAE;wBACZ,OAAOA,MAAM,KAAK;oBACtB;oBAEA,IAAIC,WAAW,MAAM,IAAI;wBACrB,MAAMC,QAAQD,WAAW,KAAK;wBAC9B,IAAIC,AAAe,yBAAfA,MAAM,IAAI,EACV,OAAO,IAAIC,iBACP,CAAC,MAAM,EAAEC,KAAK,SAAS,CAACJ,OAAO,gBAAgB,CAAC;wBAIxD,OAAO,IAAIK,cAAc;4BACrB,SAASH,MAAM,OAAO;4BACtB,MAAMA,MAAM,IAAI;4BAChB,MAAMA,MAAM,IAAI;wBACpB;oBACJ;oBAEA,OAAO,IAAII,SAASL,WAAW,KAAK;gBACxC;QACR;QAEAb,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACmB;gBAAiBV;aAAe;YAC/C,UACI,CAACW,iBAA4CV,UAC7C;oBACI,MAAMW,WAAWD,gBAAgB,WAAW;oBAE5C,IAAI,CAACC,SAAS,OAAO,IACjB,MAAM,IAAIC;oBAKd,MAAMC,eAAe,MAAMH,gBAAgB,oBAAoB,CAAC,UAErD,MAAMV,QAAQ,OAAO,CAAC;4BAAE,IAAIW,SAAS,EAAE;wBAAC;oBAGnD,IAAIE,aAAa,MAAM,IAAI;wBACvB,MAAMT,QAAQS,aAAa,KAAK;wBAChC,IAAIT,AAAe,yBAAfA,MAAM,IAAI,EACV,OAAO,IAAIC,iBACP,CAAC,aAAa,EAAEM,SAAS,EAAE,CAAC,eAAe,CAAC;wBAIpD,OAAO,IAAIJ,cAAc;4BACrB,SAASH,MAAM,OAAO;4BACtB,MAAMA,MAAM,IAAI;4BAChB,MAAMA,MAAM,IAAI;wBACpB;oBACJ;oBAEA,OAAO,IAAII,SAASK,aAAa,KAAK;gBAC1C;QACR;QAEAvB,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACwB;aAAiB;YAChC,UAAU,CAACC,YAA0C;oBACjD,MAAMC,QAAQ,MAAMD,UAAU,OAAO;oBAErC,IAAIC,MAAM,MAAM,IACZ,OAAO,IAAIC,kBAAkBD,MAAM,KAAK;oBAG5C,OAAO,IAAIE,aAAaF,MAAM,KAAK;gBACvC;QACJ;QAEA,OAAO1B;IACX;AACJ;AAEO,MAAM6B,qBAAqBC,yBAAyB,oBAAoB,CAAC;IAC5E,gBAAgB/B;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import type { IGraphQLSchemaBuilder } from "@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js";
|
|
3
|
+
declare class WcpSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {
|
|
4
|
+
execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder>;
|
|
5
|
+
}
|
|
6
|
+
export declare const WcpSchemaFactory: typeof WcpSchemaFactoryImpl & {
|
|
7
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.core").ICoreGraphQLSchemaFactory>;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ErrorResponse, Response } from "@webiny/
|
|
1
|
+
import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { ErrorResponse, Response } from "@webiny/api-graphql/responses.js";
|
|
3
3
|
import { WcpContext } from "../../features/wcp/WcpContext/index.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
class WcpSchemaFactoryImpl {
|
|
5
|
+
async execute(builder) {
|
|
6
|
+
builder.addTypeDefs(`
|
|
7
7
|
type WcpProjectPackageFeaturesFeature {
|
|
8
8
|
enabled: Boolean
|
|
9
9
|
options: JSON
|
|
@@ -18,6 +18,8 @@ const createWcpGraphQL = ()=>new GraphQLSchemaPlugin({
|
|
|
18
18
|
recordLocking: WcpProjectPackageFeaturesFeature
|
|
19
19
|
fileManager: WcpProjectPackageFeaturesFeature
|
|
20
20
|
aiPowerups: WcpProjectPackageFeaturesFeature
|
|
21
|
+
abTesting: WcpProjectPackageFeaturesFeature
|
|
22
|
+
remoteComponents: WcpProjectPackageFeaturesFeature
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
type WcpProjectPackage {
|
|
@@ -57,15 +59,18 @@ const createWcpGraphQL = ()=>new GraphQLSchemaPlugin({
|
|
|
57
59
|
extend type Mutation {
|
|
58
60
|
wcp: WcpMutation
|
|
59
61
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
`);
|
|
63
|
+
builder.addResolver({
|
|
64
|
+
path: "Query.wcp",
|
|
65
|
+
resolver: ()=>async ()=>({})
|
|
66
|
+
});
|
|
67
|
+
builder.addResolver({
|
|
68
|
+
path: "WcpQuery.getProject",
|
|
69
|
+
dependencies: [
|
|
70
|
+
WcpContext
|
|
71
|
+
],
|
|
72
|
+
resolver: (wcpContext)=>async ()=>{
|
|
67
73
|
try {
|
|
68
|
-
const wcpContext = context.container.resolve(WcpContext);
|
|
69
74
|
const project = wcpContext.getProjectWithFeatureFlags();
|
|
70
75
|
if (!project) throw Error("Could not get project!");
|
|
71
76
|
return new Response(project);
|
|
@@ -78,9 +83,14 @@ const createWcpGraphQL = ()=>new GraphQLSchemaPlugin({
|
|
|
78
83
|
});
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
86
|
+
});
|
|
87
|
+
return builder;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const WcpSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({
|
|
91
|
+
implementation: WcpSchemaFactoryImpl,
|
|
92
|
+
dependencies: []
|
|
93
|
+
});
|
|
94
|
+
export { WcpSchemaFactory };
|
|
85
95
|
|
|
86
|
-
//# sourceMappingURL=
|
|
96
|
+
//# sourceMappingURL=WcpSchemaFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql/wcp/WcpSchemaFactory.js","sources":["../../../src/graphql/wcp/WcpSchemaFactory.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport type { IGraphQLSchemaBuilder } from \"@webiny/api-graphql/features/GraphQLSchemaBuilder/abstractions.js\";\nimport { ErrorResponse, Response } from \"@webiny/api-graphql/responses.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nclass WcpSchemaFactoryImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(builder: IGraphQLSchemaBuilder): Promise<IGraphQLSchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type WcpProjectPackageFeaturesFeature {\n enabled: Boolean\n options: JSON\n }\n\n type WcpProjectPackageFeatures {\n seats: WcpProjectPackageFeaturesFeature\n multiTenancy: WcpProjectPackageFeaturesFeature\n advancedPublishingWorkflow: WcpProjectPackageFeaturesFeature\n advancedAccessControlLayer: WcpProjectPackageFeaturesFeature\n auditLogs: WcpProjectPackageFeaturesFeature\n recordLocking: WcpProjectPackageFeaturesFeature\n fileManager: WcpProjectPackageFeaturesFeature\n aiPowerups: WcpProjectPackageFeaturesFeature\n abTesting: WcpProjectPackageFeaturesFeature\n remoteComponents: WcpProjectPackageFeaturesFeature\n }\n\n type WcpProjectPackage {\n features: WcpProjectPackageFeatures\n }\n\n type WcpProject {\n orgId: ID\n projectId: ID\n package: WcpProjectPackage\n }\n\n type WcpError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type WcpProjectResponse {\n data: WcpProject\n error: WcpError\n }\n\n type WcpQuery {\n getProject: WcpProjectResponse\n }\n\n type WcpMutation {\n updateProject: WcpProjectResponse\n }\n\n extend type Query {\n wcp: WcpQuery\n }\n\n extend type Mutation {\n wcp: WcpMutation\n }\n `);\n\n builder.addResolver({\n path: \"Query.wcp\",\n resolver: () => async () => ({})\n });\n\n builder.addResolver({\n path: \"WcpQuery.getProject\",\n dependencies: [WcpContext],\n resolver: (wcpContext: WcpContext.Interface) => async () => {\n try {\n const project = wcpContext.getProjectWithFeatureFlags();\n\n if (!project) {\n throw Error(`Could not get project!`);\n }\n\n return new Response(project);\n } catch (e) {\n return new ErrorResponse({\n code: \"COULD_NOT_GET_PROJECT\",\n message: e.message,\n data: null,\n stack: e.stack\n });\n }\n }\n });\n\n return builder;\n }\n}\n\nexport const WcpSchemaFactory = CoreGraphQLSchemaFactory.createImplementation({\n implementation: WcpSchemaFactoryImpl,\n dependencies: []\n});\n"],"names":["WcpSchemaFactoryImpl","builder","WcpContext","wcpContext","project","Error","Response","e","ErrorResponse","WcpSchemaFactory","CoreGraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QAAQC,OAA8B,EAAkC;QAC1EA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwDnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IAAM,UAAa,EAAC;QAClC;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAW;YAC1B,UAAU,CAACC,aAAqC;oBAC5C,IAAI;wBACA,MAAMC,UAAUD,WAAW,0BAA0B;wBAErD,IAAI,CAACC,SACD,MAAMC,MAAM;wBAGhB,OAAO,IAAIC,SAASF;oBACxB,EAAE,OAAOG,GAAG;wBACR,OAAO,IAAIC,cAAc;4BACrB,MAAM;4BACN,SAASD,EAAE,OAAO;4BAClB,MAAM;4BACN,OAAOA,EAAE,KAAK;wBAClB;oBACJ;gBACJ;QACJ;QAEA,OAAON;IACX;AACJ;AAEO,MAAMQ,mBAAmBC,yBAAyB,oBAAoB,CAAC;IAC1E,gBAAgBV;IAChB,cAAc,EAAE;AACpB"}
|
package/index.d.ts
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { ApiCoreFeature } from "./ApiCoreFeature.js";
|
|
2
|
+
export { ApiCoreStorageOperationsFactory, registerApiCoreStorageOperations } from "./features/storageOperations/abstractions.js";
|
|
3
|
+
export { WcpLicenseProvider } from "./features/wcp/WcpLicenseProvider.js";
|
package/index.js
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { ApiCoreFeature } from "./ApiCoreFeature.js";
|
|
2
|
+
export { ApiCoreStorageOperationsFactory, registerApiCoreStorageOperations } from "./features/storageOperations/abstractions.js";
|
|
3
|
+
export { WcpLicenseProvider } from "./features/wcp/WcpLicenseProvider.js";
|