From 95c5df0781235b1fca1d4ebb67693de8c8fd2bd1 Mon Sep 17 00:00:00 2001 From: Val <68596159+valya@users.noreply.github.com> Date: Thu, 24 Oct 2024 18:41:05 +0100 Subject: [PATCH] refactor: Remove all scope definition duplication (no-changelog) (#11401) --- packages/@n8n/permissions/src/types.ts | 55 ++++---------------------- 1 file changed, 8 insertions(+), 47 deletions(-) diff --git a/packages/@n8n/permissions/src/types.ts b/packages/@n8n/permissions/src/types.ts index f32c00ad41..b36fb792ae 100644 --- a/packages/@n8n/permissions/src/types.ts +++ b/packages/@n8n/permissions/src/types.ts @@ -1,6 +1,5 @@ -import type { DEFAULT_OPERATIONS, RESOURCES } from './constants'; +import type { RESOURCES } from './constants'; -export type DefaultOperations = (typeof DEFAULT_OPERATIONS)[number]; export type Resource = keyof typeof RESOURCES; export type ResourceScope< @@ -10,52 +9,14 @@ export type ResourceScope< export type WildcardScope = `${Resource}:*` | '*'; -export type AnnotationTagScope = ResourceScope<'annotationTag'>; -export type AuditLogsScope = ResourceScope<'auditLogs'>; -export type BannerScope = ResourceScope<'banner'>; -export type CommunityScope = ResourceScope<'community'>; -export type CommunityPackageScope = ResourceScope<'communityPackage'>; -export type CredentialScope = ResourceScope<'credential'>; -export type ExternalSecretScope = ResourceScope<'externalSecret'>; -export type ExternalSecretProviderScope = ResourceScope<'externalSecretsProvider'>; -export type EventBusDestinationScope = ResourceScope<'eventBusDestination'>; -export type LdapScope = ResourceScope<'ldap'>; -export type LicenseScope = ResourceScope<'license'>; -export type LogStreamingScope = ResourceScope<'logStreaming'>; -export type OrchestrationScope = ResourceScope<'orchestration'>; -export type ProjectScope = ResourceScope<'project'>; -export type SamlScope = ResourceScope<'saml'>; -export type SecurityAuditScope = ResourceScope<'securityAudit'>; -export type SourceControlScope = ResourceScope<'sourceControl'>; -export type TagScope = ResourceScope<'tag'>; -export type UserScope = ResourceScope<'user'>; -export type VariableScope = ResourceScope<'variable'>; -export type WorkersViewScope = ResourceScope<'workersView'>; -export type WorkflowScope = ResourceScope<'workflow'>; +// This is purely an intermediary type. +// If we tried to do use `ResourceScope` directly we'd end +// up with all resources having all scopes (e.g. `ldap:uninstall`). +type AllScopesObject = { + [R in Resource]: ResourceScope; +}; -export type Scope = - | AnnotationTagScope - | AuditLogsScope - | BannerScope - | CommunityScope - | CommunityPackageScope - | CredentialScope - | ExternalSecretProviderScope - | ExternalSecretScope - | EventBusDestinationScope - | LdapScope - | LicenseScope - | LogStreamingScope - | OrchestrationScope - | ProjectScope - | SamlScope - | SecurityAuditScope - | SourceControlScope - | TagScope - | UserScope - | VariableScope - | WorkersViewScope - | WorkflowScope; +export type Scope = AllScopesObject[K]; export type ScopeLevel = 'global' | 'project' | 'resource'; export type GetScopeLevel = Record;