UNPKG

f5-conx-core

Version:

F5 SDK for JavaScript with Typescript type definitions

90 lines 4.6 kB
/** * Copyright 2021 F5 Networks, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.injectSchema = void 0; // import { AdcDeclaration, As3Declaration } from '..'; // import { isValidJson } from "./utils/utils"; // import { window } from "vscode"; const __1 = require(".."); // import { isValidJson } from './misc'; // import { logger } from './logger'; /** * detects ATC dec type and injects appropriate schema * - will also remove schema reference * * @param dec: json parsed declaration (as3/do/ts/cf) * @param (optional) logger class with .info */ function injectSchema(dec, logger) { return __awaiter(this, void 0, void 0, function* () { // if schema already in declaration, remove it and return if (dec.$schema) { logger === null || logger === void 0 ? void 0 : logger.info('Removing schema from declaration'); delete dec.$schema; return dec; } else { if (dec.class === 'AS3') { // the following add the schema to the beginning of the dec as compared // to the typical dec.$schema param add would put it at the end logger === null || logger === void 0 ? void 0 : logger.info('got a regular new as3 declaration with deployment parameters -> adding as3 schema'); return Object.assign({ "$schema": __1.atcMetaData.as3.schema }, dec); } else if (dec.class === 'ADC') { // typically come from getting existing decs from as3 service // so, we wrap the declartion with details of the necessary ADC class logger === null || logger === void 0 ? void 0 : logger.info('got a bare ADC dec -> wrapping with AS3 object/params/schema'); return { "$schema": __1.atcMetaData.as3.schema, "class": "AS3", declaration: dec }; } else if (dec.class === 'DO') { logger === null || logger === void 0 ? void 0 : logger.info('Detected DO/BIG-IQ dec -> adding schema'); return Object.assign({ "$schema": __1.atcMetaData.do.parentSchema }, dec); } else if (dec.class === 'Device') { logger === null || logger === void 0 ? void 0 : logger.info('Detected DO/Device dec -> adding schema'); return Object.assign({ "$schema": __1.atcMetaData.do.schema }, dec); } else if (dec.class === 'Telemetry') { logger === null || logger === void 0 ? void 0 : logger.info('Detected TS declaration -> adding schema'); return Object.assign({ "$schema": __1.atcMetaData.ts.schema }, dec); } else if (dec.class === 'Cloud_Failover') { logger === null || logger === void 0 ? void 0 : logger.info('Detected CF declaration -> adding schema'); return Object.assign({ "$schema": __1.atcMetaData.cf.schema }, dec); } else { logger === null || logger === void 0 ? void 0 : logger.info('valid json, but not f5 atc declaration -> no change'); return dec; } } }); } exports.injectSchema = injectSchema; //# sourceMappingURL=atcSchema.js.map