f5-conx-core
Version:
F5 SDK for JavaScript with Typescript type definitions
90 lines • 4.6 kB
JavaScript
/**
* 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.
*/
;
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