UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

211 lines (183 loc) 6.86 kB
/** * 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>; }