@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
76 lines (74 loc) • 3.29 kB
JavaScript
"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