@apistudio/apim-cli
Version:
CLI for API Management Products
40 lines (35 loc) • 1.48 kB
text/typescript
import { BaseAsset } from "@apic/studio-client-model";
import { isNullOrUndefined } from "./data.helper.js";
import { AppConstants } from "../constants/app.constants.js";
import { getDocumentBasedOnLanguage } from "./data.parser.js";
function isBaseAsset(fileContent: string, language: string): boolean {
const parsedYaml: BaseAsset = getDocumentBasedOnLanguage(fileContent, language);
return !!parsedYaml?.kind;
}
function getBaseAsset(fileContent: string, language: string): string {
const parsedYaml: BaseAsset = getDocumentBasedOnLanguage(fileContent, language);
return parsedYaml.kind.toLowerCase();
}
function isValidAssetRefValue(assetRefValue: string): boolean {
if (isNullOrUndefined(assetRefValue)) {
return false;
}
return (
assetRefValue.split(AppConstants.COLON).length >= 1 &&
assetRefValue.split(AppConstants.COLON).length <= 3
);
};
function isValidAsset(asset: BaseAsset | null | undefined, checkForVersion: boolean): boolean {
if (isNullOrUndefined(asset)) {
return false;
}
asset = asset as BaseAsset;
return !isNullOrUndefined(asset.kind) &&
!isNullOrUndefined(asset.metadata) &&
!isNullOrUndefined(asset.metadata.name) &&
(!checkForVersion || !isNullOrUndefined(asset.metadata.version));
}
function isValidAssetFileName(filename: string) {
return filename.endsWith('.yaml') || filename.endsWith('.yml') || filename.endsWith('.json');
}
export { isBaseAsset, isValidAssetFileName, isValidAsset, isValidAssetRefValue, getBaseAsset };