@apistudio/apim-cli
Version:
CLI for API Management Products
211 lines (183 loc) • 6.86 kB
text/typescript
/**
* Copyright IBM Corp. 2024, 2025
*/
import { APICFileInfo } from '../../apic-mode/models/apic-file-info.model.js';
import { APICProject } from '../../apic-mode/models/apic-project.model.js';
import { AddApiFromFileFormData } from '../../component-models/models/add-api-from-file-form-data.model.js';
import { AddApiFromScratchFormData } from '../../component-models/models/add-api-from-scratch-form-data.model.js';
import { AddApiFromUrlFormData } from '../../component-models/models/add-api-from-url-form-data.model.js';
import { FileAccessType, ProjectType, SpecObject } from '../../index.js';
import { Project } from '../../lfs/models/project.model.js';
import { AssetDependencies } from '../../store/model/asset-dependency.model.js';
import { VCSFileInfo } from '../../vcs/models/vcs-file-info.model.js';
import { VCSProject } from '../../vcs/models/vcs-project.model.js';
import {
BaseAsset,
KindMetadata,
Metadata,
} from '../models/base-asset.model.js';
import { FileExplorerNode } from '../models/file-explorer.model.js';
import { Response } from '../models/response-wrapper.js';
export interface VCShandle {
repoNameWithOwner: string;
name: string;
}
export interface APIChandle {
orgId: string;
name: string;
}
export interface FormOperationResponse {
data: string;
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo;
}
export interface ApiFormOperationResponse {
api: FormOperationResponse;
spec: FormOperationResponse;
datapowerAssembly?: FormOperationResponse | null;
freeFlowPolicySequence?: FormOperationResponse | null;
cors?: FormOperationResponse | null;
properties?: FormOperationResponse | null;
}
export interface IFileExplorerOperationsHandler {
/**
* Generates the tree of objects with required info to construct the file explorer window.
* @param projectFolderEntity The parent entity to build file explorer tree from. The projectFolderEntity can either be a directory handle or a vcs tree entry.
* @returns A file explorer node representing the transformed equivalent of the given folder to be used for rendering the File explorer.
*/
buildTree(
projectFolderEntity: FileSystemDirectoryHandle | VCShandle | APIChandle,
parentFolderEntity: FileSystemDirectoryHandle | VCShandle | APIChandle,
id?: string,
project?: APICProject,
): Promise<Response<FileExplorerNode>>;
createFile(
parentNode: FileExplorerNode,
fileName: string,
project: Project | VCSProject | APICProject,
): Promise<Response<FileExplorerNode>>;
createDirectory(
parentNode: FileExplorerNode,
directoryName: string,
project: Project | VCSProject | APICProject,
): Promise<Response<FileExplorerNode>>;
deleteFile(
node: FileExplorerNode,
project: Project | VCSProject | APICProject,
): Promise<Response>;
deleteDirectory(
node: FileExplorerNode,
project: Project | VCSProject | APICProject,
): Promise<Response>;
renameFile(
node: FileExplorerNode,
newName: string,
project: Project | VCSProject | APICProject,
): Promise<Response<FileExplorerNode>>;
duplicateFile(
parentNode: FileExplorerNode,
node: FileExplorerNode,
project: Project | VCSProject,
): Promise<Response<FileExplorerNode>>;
getSelectedFolderPath(fileExplorerInfo: {
selectedNode: FileExplorerNode | null;
}): string;
createAPIFileFromScratch(
ApiFormData: AddApiFromScratchFormData,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<ApiFormOperationResponse>;
createAPIFileFromFile(
ApiFormData: AddApiFromFileFormData,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<ApiFormOperationResponse>;
createAPIFileFromUrl(
ApiFormData: AddApiFromUrlFormData,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<ApiFormOperationResponse>;
createTestFileFromScratch(
TestFormData: Metadata,
active: Project | VCSProject | APICProject,
kind: string,
selectedFolder?: string,
): Promise<FileSystemFileHandle | VCSFileInfo | APICFileInfo>;
createCountLimitDefFromScratch(
countLimitDefData: KindMetadata,
active: Project | VCSProject | APICProject,
spec: object,
selectedFolder?: string,
): Promise<FileSystemFileHandle | VCSFileInfo | APICFileInfo>;
createPolicyFileFromScratch(
policyFromData: KindMetadata,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<FormOperationResponse>;
createFreeFlowPolicyFileFromScratch(
policyFromData: KindMetadata,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<FormOperationResponse>;
createGlobalPolicyFileFromScratch(
policyFromData: KindMetadata,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<FormOperationResponse>;
createPolicyKindFileFromScratch(
policyKind: string,
policyFromData: KindMetadata,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<FormOperationResponse>;
createDatapowerAssemblyFileFromScratch(
datapowerFormData: KindMetadata,
active: Project | VCSProject | APICProject,
selectedFolder?: string,
): Promise<FormOperationResponse>;
generateGatewayPolicyFileFromFile(
active: Project | VCSProject | APICProject,
datapowerContent: string,
selectedFolder?: string,
): Promise<FormOperationResponse>;
createMcpKindFileFromScratch(
asset: BaseAsset,
active: Project | VCSProject | APICProject,
): Promise<FormOperationResponse>;
updateApiMetadata(
newFormData: AddApiFromScratchFormData,
existingApiFileHandle: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
active: Project | VCSProject | APICProject,
): Promise<FormOperationResponse>;
generateXSLT(
fileName: string,
active: Project | VCSProject | APICProject,
content: string,
): Promise<FormOperationResponse>;
handleDragAndDrop(
sourceNode: FileExplorerNode,
targetNode: FileExplorerNode,
onError: (title: string, subtitle: string) => void,
getEditorId: (
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
) => number,
handleCloseTab: (id: number) => Promise<void>,
active: Project | VCSProject | APICProject,
data: AssetDependencies,
saveFile: (
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
fileContent: string,
) => Promise<boolean>,
): Promise<void>;
/**
* Returns the spec object template for a given policy kind
*/
getSpecForKind(policyKind: string): SpecObject;
/**
* Wrapper function to write across all supported project modes.
*/
writeToFile(
project: ProjectType,
file: FileAccessType,
fileContent: string,
): Promise<void>;
}