@apistudio/apim-cli
Version:
CLI for API Management Products
63 lines (57 loc) • 1.93 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 { AssetInfo } from '../../lfs/models/asset-info.model.js';
import { Project } from '../../lfs/models/project.model.js';
import { VCSFileInfo } from '../../vcs/models/vcs-file-info.model.js';
import { VCSProject } from '../../vcs/models/vcs-project.model.js';
import { OpenApiSpecDocument } from '../interfaces/api-spec-handler.interface.js';
import { OpenApiTypesEnum } from '../models/openapi-types.enum.js';
export type APIAdditionalPropertyKeys = 'uriSchemes' | 'properties' | 'cors';
export type APIContext = {
data: OpenApiSpecDocument | null;
context: {
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo | null;
};
selectedItems: Array<SelectionItem>;
apiVersion: OpenApiTypesEnum | null;
policySequences: AssetInfo[];
apiAdditionalProperties: {
active?: APIAdditionalPropertyKeys;
isDetailedFormViewOpen: boolean;
properties: {
[key in APIAdditionalPropertyKeys]?: ProjectAssetInfo;
};
};
loadingInfo: LoadingInfo;
};
export interface ProjectAssetInfo extends AssetInfo {
project: Project | VCSProject | APICProject;
}
export type SelectionType =
| 'module'
| 'path'
| 'operation'
| 'component'
| 'response'
| 'security';
export type SelectionItem = {
position: number;
type: SelectionType;
value: string | number;
showBreadCrumbs: boolean;
displayNameForBreadCrumbs: string;
onBreadCrumbClick?: () => void;
};
export type LoadingInfo = {
// 1. Tracks the actual data fetching status
isFetchingData: boolean;
// 2. Tracks whether the loader should *visually* be shown (Delayed state)
showDelayedLoader: boolean;
// Internal timer reference
showTimer?: NodeJS.Timeout;
minDisplayTimer?: NodeJS.Timeout;
shownAt?: number;
};