@alauda-fe/common
Version:
Alauda frontend team common codes.
123 lines (122 loc) • 5.92 kB
TypeScript
/**
* @packageDocumentation
* @module api
*/
import { Observable } from 'rxjs';
import { CRYPTO_TYPE, DeepPartial, KubernetesResource, ResourceListParams } from '../core/public-api';
export type K8sResourceDefinition = Readonly<{
type: string;
apiGroup?: string;
apiVersion?: string;
}>;
export type K8sResourceDefinitions = Readonly<Record<string, K8sResourceDefinition>>;
export interface ApiDefinitionBaseParams {
definition: K8sResourceDefinition;
}
export interface ApiTypeBaseParams<T extends string> {
/**
* @deprecated 请使用 definition 参数
*/
type: T;
}
export type ApiBaseParams<T extends string> = {
notifyOnError?: boolean;
onlyMetadata?: boolean;
customAccept?: string;
crypto?: CRYPTO_TYPE;
} & (ApiDefinitionBaseParams | ApiTypeBaseParams<T>);
export type ResourceBaseParams<T extends string> = ApiBaseParams<T> & {
name: string;
};
export type ResourceListBaseParams<T extends string> = ApiBaseParams<T> & {
queryParams?: ResourceListParams;
};
export interface WatchApiParams {
active$?: Observable<boolean>;
keepalive?: boolean;
downgradePolling?: number;
retry?: true | {
count?: number;
delay?: number;
};
}
export interface GlobalResourceBaseParams {
namespaced?: boolean;
namespace?: string;
}
export type GlobalResourceParams<T extends string> = ResourceBaseParams<T> & GlobalResourceBaseParams;
export type WatchGlobalResourceParams<T extends string> = GlobalResourceParams<T> & WatchApiParams;
export type GlobalResourceListParams<T extends string> = ResourceListBaseParams<T> & GlobalResourceBaseParams;
export type WatchGlobalResourceListParams<T extends string> = GlobalResourceListParams<T> & WatchApiParams;
export interface ErebusResourceBaseParams {
cluster?: string;
namespace?: string;
}
export type ErebusResourceParams<T extends string> = ResourceBaseParams<T> & ErebusResourceBaseParams;
export type WatchErebusResourceParams<T extends string> = ErebusResourceParams<T> & WatchApiParams;
export type ErebusResourceListParams<T extends string> = ResourceListBaseParams<T> & ErebusResourceBaseParams;
export type WatchErebusResourceListParams<T extends string> = ErebusResourceListParams<T> & WatchApiParams;
export type ResourceReadParams<T extends string> = GlobalResourceParams<T> | ErebusResourceParams<T>;
export type WatchResourceReadParams<T extends string> = WatchGlobalResourceParams<T> | WatchErebusResourceParams<T>;
export type ResourceListReadParams<T extends string> = GlobalResourceListParams<T> | ErebusResourceListParams<T>;
export type WatchResourceListReadParams<T extends string> = WatchGlobalResourceListParams<T> | WatchErebusResourceListParams<T>;
export type ResourceBaseWriteParams<T extends KubernetesResource, R extends string> = ApiBaseParams<R> & {
resource: T;
};
/**
* patch 资源时需要传递完整的原始资源 (resource) 和更新的部分 (part)
*/
export type ResourceBasePatchParams<T extends KubernetesResource, R extends string> = (ResourceBaseWriteParams<T, R> | ResourceBaseParams<R>) & {
operation?: PatchOperation;
part: DeepPartial<T> | JSONPatch[];
};
export interface ResourceDeleteAdditionalParams {
body?: unknown;
}
export type GlobalResourceWriteParams<T extends KubernetesResource, R extends string> = ResourceBaseWriteParams<T, R> & GlobalResourceBaseParams;
export type GlobalResourcePatchParams<T extends KubernetesResource, R extends string> = ResourceBasePatchParams<T, R> & GlobalResourceBaseParams;
export type GlobalResourceDeleteParams<T extends KubernetesResource, R extends string> = (GlobalResourceWriteParams<T, R> | GlobalResourceParams<R>) & ResourceDeleteAdditionalParams;
export type ErebusResourceWriteParams<T extends KubernetesResource, R extends string> = ResourceBaseWriteParams<T, R> & ErebusResourceBaseParams;
export type ErebusResourcePatchParams<T extends KubernetesResource, R extends string> = ResourceBasePatchParams<T, R> & ErebusResourceBaseParams;
export type ErebusResourceDeleteParams<T extends KubernetesResource, R extends string> = (ErebusResourceWriteParams<T, R> | ErebusResourceParams<R>) & ResourceDeleteAdditionalParams;
export type ErebusResourceBatchDeleteParams<R extends string> = ErebusResourceListParams<R> & ResourceDeleteAdditionalParams;
export type ResourceWriteParams<R extends string, T extends KubernetesResource = KubernetesResource> = GlobalResourceWriteParams<T, R> | ErebusResourceWriteParams<T, R>;
export type ResourcePatchParams<R extends string, T extends KubernetesResource = KubernetesResource> = GlobalResourcePatchParams<T, R> | ErebusResourcePatchParams<T, R>;
export type ResourceDeleteParams<R extends string, T extends KubernetesResource = KubernetesResource> = GlobalResourceDeleteParams<T, R> | ErebusResourceDeleteParams<T, R>;
export type ResourceApiParams<T extends string> = GlobalResourceListParams<T> | ErebusResourceListParams<T> | ResourceReadParams<T> | ResourceWriteParams<T> | ResourcePatchParams<T> | ResourceDeleteParams<T>;
export declare enum PatchOperation {
JSON = "application/json-patch+json",
Merge = "application/merge-patch+json",
StrategicMerge = "application/strategic-merge-patch+json"
}
export declare enum JSONPatchOp {
Test = "test",
Remove = "remove",
Add = "add",
Replace = "replace",
Move = "move",
Copy = "copy"
}
export type JSONPatch = {
op: JSONPatchOp.Test | JSONPatchOp.Add | JSONPatchOp.Replace;
path: string;
value: unknown;
} | {
op: JSONPatchOp.Remove;
path: string;
} | {
op: JSONPatchOp.Move | JSONPatchOp.Copy;
from: string;
path: string;
};
export interface WatchAPIResponse<T extends KubernetesResource> {
type: WatchEvent;
object: T;
}
export declare enum WatchEvent {
Added = "ADDED",
Modified = "MODIFIED",
Deleted = "DELETED",
Error = "ERROR",
Bookmark = "BOOKMARK"
}