@apistudio/apim-cli
Version:
CLI for API Management Products
84 lines (78 loc) • 2.5 kB
text/typescript
/**
* Copyright IBM Corp. 2024, 2025
*/
import { FileAccessType } from '../../api-authoring/interfaces/api-spec-handler.interface.js';
import { APICFileInfo } from '../../apic-mode/models/apic-file-info.model.js';
import { EditorTab } from '../../common/models/editor-tab.model.js';
import { FileExplorerNode } from '../../common/models/file-explorer.model.js';
import { IlintResponse } from '../../common/models/lint-response.model.js';
import { VCSFileInfo } from '../../vcs/models/vcs-file-info.model.js';
type NestedHashMap = {
[key: string]: string;
};
type HashMap = {
[key: string]: NestedHashMap;
};
type EditorState = {
editorId: number;
hm: HashMap;
activeTab: EditorTab | -1;
tabs: EditorTab[];
fileExplorerInfo: {
selectedNode: FileExplorerNode | null;
};
};
type EditorAction = {
initialize: (
editorId: number,
activeTab: EditorTab | -1,
tabs: EditorTab[],
hm: HashMap,
) => void;
loadDataFromIndexedDb: () => Promise<void>;
openFile: (
file: FileSystemFileHandle,
directoryHandle: FileSystemDirectoryHandle,
index?: number,
lineNumber?: number,
) => Promise<void>;
removeFile: (id: number) => Promise<number>;
renameFile: (
oldFileTabId: number,
oldFileName: string,
newFile: FileAccessType,
) => Promise<void>;
saveFile: (
fileHandle: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
fileContent: string,
) => Promise<boolean>;
changeLine: (value: number, column: number) => void;
setActiveTab: (editorTab: EditorTab) => void;
reset: () => void;
openVCSFile: (fileInfo: VCSFileInfo, lineNumber?: number) => Promise<void>;
updateLintResult: (lintResponse: IlintResponse[]) => void;
resetActiveTab: (tab?: EditorTab) => void;
getEditorId: (
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
) => number;
updateTabsOnFormSave: (
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
) => Promise<void>;
updateTab: (
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
) => Promise<void>;
setFileExplorerInfo: (node: FileExplorerNode | null) => void;
readFile: (
file: FileSystemFileHandle | VCSFileInfo | APICFileInfo,
directoryHandle: FileSystemDirectoryHandle,
isVCSFile: boolean,
) => Promise<
| {
filePath: string;
content?: any;
}
| undefined
>;
openAPICFile: (fileInfo: APICFileInfo, lineNumber?: number) => Promise<void>;
};
export type EditorStore = EditorState & EditorAction;