UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

63 lines (58 loc) 2.6 kB
/** * Copyright Super iPaaS Integration LLC, an IBM Company 2024 */ import { FileAccessType } from "../api-authoring/interfaces/api-spec-handler.interface.js"; import { ApiScopeInfo } from "../api-authoring/store/api-scope-context.model.js"; import { Metadata } from "../common/models/base-asset.model.js"; export enum SupportedMethods { GET = 'get', POST = 'post', PUT = 'put', DELETE = 'delete', PATCH = 'patch', OPTIONS = 'options' } export interface ScopedPaths { [key: string]: SupportedMethods[]; } export interface Scope { metadata: Metadata; scopedPaths?: ScopedPaths; } export interface IScopeHandler { /** * Creates a scope file with provided metadata in the project and links it in the provided apiFile * @param metadata The metadata of scope. * @param apiFile FileHandle or VCSFileInfo in which the newly created scope would be referenced * @returns Returns the FileHandle or VCSFileInfo of created scope */ createScope(metadata: Metadata, apiFile: FileAccessType): Promise<FileAccessType>; /** * Overwrites the scopeFile content with updatedScope data. * Also updates entry in apiFile if metatdata of scope has changed. * @param scopeFile FileHandle or VCSFileInfo of kind Scope file * @param udpatedScope Updated scope that should be written in scopeFile * @param apiFile FileHandle or VCSFileInfo of api where updated scope would be referred */ updateScope(scopeFile: FileAccessType, udpatedScope: Scope, apiFile: FileAccessType): Promise<void>; /** * Returns the overall scope object parsed from scopeFile. * @param scopeFile FileHandle or VCSFileInfo of kind Scope file * @returns Scope object with metadata and list of scopedPaths */ getScope(scopeFile: FileAccessType): Promise<Scope>; /** * Removes the scopeFile from project folder and its entry from apiFile * @param scopeFile FileHandle or VCSFileInfo of kind Scope file * @param scopeMetadata Metadata of scope file to be deleted * @param apiFile FileHandle or VCSFileInfo of api where deleted scope entry should be removed */ deleteScope(scopeFile: FileAccessType, scopeMetadata: Metadata, apiFile: FileAccessType): Promise<void>; /** * Checks if the 2 given scopes are same and returns the match state * @param scopeInfo1 Scope info to check match * @param scopeInfo2 Other scope to check match * @returns True if a match, else false */ isMatchingScope(scopeInfo1: ApiScopeInfo, scopeInfo2: ApiScopeInfo): boolean; }