@apistudio/apim-cli
Version:
CLI for API Management Products
77 lines • 6.54 kB
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>;
}
//# sourceMappingURL=file-explorer-handler.interface.d.ts.map