UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

64 lines (62 loc) 2.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeclareOverrideUpdater = void 0; const common_1 = require("../../../common"); const logger_1 = require("../../utils/logger"); /** * Updater for DeclareOverride errors. */ class DeclareOverrideUpdater { /** * 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`); } let result; const overrideNameRegex = /Property\s+'([^']+)'(?=\s+will\s+overwrite\s+the\s+base\s+property)/; let overrideName; try { overrideName = error.message.match(overrideNameRegex)[1]; logger_1.Logger.log(`Found parameter name from error message as ${overrideName}`); } catch (error) { logger_1.Logger.error(`Cannot find parameter name from ${error.message}`); return new Promise(resolve => resolve('')); } // const parameterRegex = new RegExp(`(public|protected|private)\\s+${overrideName}:\\s*\\w+\\s*;`, 'g'); // work for below cases: // public input: string; // public input: string[]; // Not yet support below cases: // public input: string<>; // public input: string<[]>; // public input: string<[]>[]; // public input: string<[]>[][]; const parameterRegex = new RegExp(`(public|protected|private)\\s+${overrideName}:\\s*(?:\\w+(\\[\\])?)(?:<\\w+>)?\\s*;`, 'g'); logger_1.Logger.log(`INFO - parameterRegex: ${parameterRegex}`); const parameters = fileData.match(parameterRegex); const validationParameterRegex = new RegExp(`declare\\s+(public|protected|private)\\s+${overrideName}:\\s*(?:\\w+(\\[\\])?)(?:<\\w+>)?\\s*;`, 'g'); logger_1.Logger.log(`INFO - validationParameterRegex: ${validationParameterRegex}`); const shouldUpdate = !!!fileData.match(validationParameterRegex); logger_1.Logger.log(shouldUpdate ? `INFO - shouldUpdate: ${shouldUpdate}` : `INFO - shouldUpdate: ${shouldUpdate}`); logger_1.Logger.log(`INFO - parameters: ${parameters}`); const replaceString = parameters ? parameters[0] : ''; if (replaceString.length && shouldUpdate) { result = common_1.Common.replaceInString(fileData, parameterRegex, `declare ${replaceString}`); error.resolved = common_1.ResolveState.Resolved; } else { error.resolved = common_1.ResolveState.Resolved; logger_1.Logger.error(`Cannot find replaceString`); return new Promise(resolve => resolve('')); } return new Promise(resolve => resolve(result)); } } exports.DeclareOverrideUpdater = DeclareOverrideUpdater; //# sourceMappingURL=declare-override-updater.js.map