UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

76 lines (74 loc) 3.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FormControlUpdater = void 0; const common_1 = require("../../../common"); const logger_1 = require("../../utils/logger"); /** * Updater for FormControl errors. */ class FormControlUpdater { /** * The update function. * @param fileData the file data. * @param error the error object. * @returns the updated file data. */ update(fileData, error) { if (!fileData) { logger_1.Logger.error(`Cannot find file data`); } const result = this.regexFixer(fileData); error.resolved = common_1.ResolveState.Resolved; return new Promise(resolve => resolve(result)); } /** * Fixe file data by regex matching. * @param inputString the input file data string. * @returns the updated file data string. */ regexFixer(inputString) { /** * clusterName: new FormControl({ value: this.model.platformSettings.kvaName }), * to * clusterName: new FormControl(this.model.platformSettings.kvaName), * * controlPlaneReplicaCount: new FormControl( * { value: this.model.workloadClusterConfiguration.controlPlaneReplicaCount }) * to * controlPlaneReplicaCount: new FormControl(this.model.workloadClusterConfiguration.controlPlaneReplicaCount) * * * useUsernameAndPassword: new FormControl({ * value: this.useUsernameAndPassword || !!( * this.model.proxySettings.password || this.model.proxySettings.username) * }), * to * useUsernameAndPassword: new FormControl(this.useUsernameAndPassword || !!( * this.model.proxySettings.password || this.model.proxySettings.username) * ), */ const valueOnlyRegex2 = /new[\s\n]*FormControl\([\s\n]*\{[\s\n]*value:[\s\n]*([^,\}]+)[\s\n]*\}[\s\n]*\)/g; const valueOnlyTarget = 'new FormControl($1)'; const valueOnlyRegex = /new[\s\n]*FormControl\([\s\n]*\{[\s\n]*value:[\s\n]*([^,\}\s]+)[\s\n]*\}[\s\n]*\)/g; const requiredRegex = /new[\s\n]*FormControl\([\s\n]*\{[\s\n]*value:[\s\n]*([^,]+),[\s\n]*disabled:[\s\n]*true,[\s\n]*required:[\s\n]*true[\s\n]*\}[\s\n]*\)/g; const requiredTarget = 'new FormControl($1, Validators.required)'; const valueOnlyRegexValid = valueOnlyRegex.test(inputString); const requiredRegexValid = requiredRegex.test(inputString); if (valueOnlyRegexValid) { inputString = inputString.replace(valueOnlyRegex, valueOnlyTarget); inputString = inputString.replace(valueOnlyRegex2, valueOnlyTarget); } if (requiredRegexValid) { inputString = inputString.replace(requiredRegex, requiredTarget); if (!inputString.includes('import { Validators } from \'@angular/forms\';')) { inputString = 'import { Validators } from \'@angular/forms\';\n' + inputString; } } if (!valueOnlyRegexValid && !requiredRegexValid) { logger_1.Logger.log('no-op'); } return inputString; } } exports.FormControlUpdater = FormControlUpdater; //# sourceMappingURL=form-control-updater.js.map