UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

84 lines (83 loc) 4.76 kB
/** * @packageDocumentation * @module permission */ import { K8sResourceDefinition } from '../api/types'; import { AnyArray, K8sResourceAction, KubernetesResource } from '../core/types/public-api'; export declare const READABLE_ACTIONS: readonly [K8sResourceAction.GET, K8sResourceAction.LIST, K8sResourceAction.PROXY, K8sResourceAction.REDIRECT, K8sResourceAction.WATCH]; export declare const WRITABLE_ACTIONS: readonly [K8sResourceAction.CREATE, K8sResourceAction.DELETE, K8sResourceAction.DELETE_COLLECTION, K8sResourceAction.PATCH, K8sResourceAction.UPDATE]; export declare const COMMON_READABLE_ACTIONS: readonly [K8sResourceAction.GET]; export declare const COMMON_WRITABLE_ACTIONS: readonly [K8sResourceAction.CREATE, K8sResourceAction.DELETE, K8sResourceAction.UPDATE]; export declare const ALL_ACTIONS: readonly [K8sResourceAction.CREATE, K8sResourceAction.DELETE, K8sResourceAction.DELETE_COLLECTION, K8sResourceAction.GET, K8sResourceAction.LIST, K8sResourceAction.PATCH, K8sResourceAction.PROXY, K8sResourceAction.REDIRECT, K8sResourceAction.UPDATE, K8sResourceAction.WATCH]; export type ReadablePermissions = Readonly<Record<(typeof READABLE_ACTIONS)[number], boolean>>; export type WritablePermissions = Readonly<Record<(typeof WRITABLE_ACTIONS)[number], boolean>>; export type CommonReadablePermissions = Readonly<Record<(typeof COMMON_READABLE_ACTIONS)[number], boolean>>; export type CommonWritablePermissions = Readonly<Record<(typeof COMMON_WRITABLE_ACTIONS)[number], boolean>>; export type AllPermissions = Readonly<Record<(typeof ALL_ACTIONS)[number] | 'all', boolean>>; export interface K8sPermissionBaseParams { advanced?: boolean; project?: string; } interface K8sTypePermissionVariantByType { type: string | K8sResourceDefinition; definition?: never; } interface K8sTypePermissionVariantByDefinition { type?: never; definition: K8sResourceDefinition; } type K8sTypePermissionVariant = K8sTypePermissionVariantByType | K8sTypePermissionVariantByDefinition; export type K8sTypePermissionBaseParams = K8sPermissionBaseParams & K8sTypePermissionVariant & { subResource?: string; cluster?: string; namespace?: string; }; export type K8sTypePermissionNoneParams = K8sTypePermissionBaseParams & { action?: null; name?: null; }; export type K8sTypePermissionSingleParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & ({ action: T; name?: string; } | { action?: T; name: string; }); export type K8sTypePermissionActionsParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & { action: AnyArray<T>; name?: string; }; export type K8sTypePermissionNamesParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & { action?: T; name: AnyArray<string>; }; export type K8sTypePermissionMultiParams<T extends K8sResourceAction> = K8sTypePermissionActionsParams<T> | K8sTypePermissionNamesParams<T>; export type K8sTypePermissionMatrixParams<T extends K8sResourceAction> = K8sTypePermissionBaseParams & { action: AnyArray<T>; name: AnyArray<string>; }; export type K8sTypePermissionParams<T extends K8sResourceAction> = K8sTypePermissionNoneParams | K8sTypePermissionSingleParams<T> | K8sTypePermissionMultiParams<T> | K8sTypePermissionMatrixParams<T>; export interface K8sPermissionTransformable<T extends boolean> { transform: T; } export type K8sTypePermissionWithTransformParams<T extends K8sResourceAction, K extends boolean> = K8sTypePermissionParams<T> & Partial<K8sPermissionTransformable<K>>; export interface K8sResourcePermissionBaseParams<T extends KubernetesResource> extends K8sPermissionBaseParams { cluster: string; resource: T; } export interface K8sResourcePermissionNoneParams<T extends KubernetesResource> extends K8sResourcePermissionBaseParams<T> { action?: null; } export interface K8sResourcePermissionSingleParams<T extends KubernetesResource, K extends K8sResourceAction> extends K8sResourcePermissionBaseParams<T> { action: K; } export interface K8sResourcePermissionMultiParams<T extends KubernetesResource, K extends K8sResourceAction> extends K8sResourcePermissionBaseParams<T> { action: AnyArray<K>; } export type K8sResourcePermissionParams<T extends KubernetesResource, K extends K8sResourceAction> = K8sResourcePermissionNoneParams<T> | K8sResourcePermissionSingleParams<T, K> | K8sResourcePermissionMultiParams<T, K>; export type K8sResourcePermissionWithTransformParams<T extends KubernetesResource, K extends K8sResourceAction, R extends boolean> = K8sResourcePermissionParams<T, K> & Partial<K8sPermissionTransformable<R>>; export interface PermissionGuardData { /** 参数的读取是否优先读取子级路由(递归) */ childFirst?: boolean; } export {};