UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

1 lines 2.52 kB
{"version":3,"sources":["../../../packages/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,qBAAa,wBAAyB,YAAW,OAAO;IACpD;;;;;OAKG;IACU,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB1E,OAAO,CAAC,oBAAoB;CAgB/B","file":"component-selector-updater.d.ts","sourcesContent":["import fse from 'fs-extra';\r\nimport { Common, ResolveState } from '../../common';\r\nimport { CodeFilePaths } from '../get-files';\r\nimport { ErrorResult } from '../models/error-result';\r\nimport { Updater } from '../models/updater-interface';\r\n\r\nexport class ComponentSelectorUpdater implements Updater {\r\n /**\r\n * Resolves component-selector linter error\r\n * @param {string} fileData String contents of file containing linter error\r\n * @param {ErrorResult} error Object representing linter error\r\n * @returns {Promise<string>} Updated file content after resolving linter error or the original contents if unable to resolve\r\n */\r\n public async update(fileData: string, error: ErrorResult): Promise<string> {\r\n const selectorNameRegex = /(?<=selector:\\s*').+(?=')/;\r\n const selectorName = fileData.match(selectorNameRegex);\r\n\r\n if (selectorName === null) {\r\n return fileData;\r\n }\r\n\r\n const newSelectorName = 'sme-' + selectorName;\r\n const result = Common.replaceInString(fileData, selectorNameRegex, newSelectorName);\r\n\r\n const files = await CodeFilePaths.initialize();\r\n\r\n for (const file of files) {\r\n this.findAndReplaceInFile(file, selectorName[0], newSelectorName);\r\n }\r\n\r\n error.resolved = ResolveState.Resolved;\r\n return new Promise(resolve => resolve(result));\r\n }\r\n\r\n private findAndReplaceInFile(filePath: string, selectorName: string, newSelectorName: string): void {\r\n let fileData = Common.readFileData(filePath);\r\n\r\n if (!fileData) {\r\n return;\r\n }\r\n\r\n const selectorUsageRegex = new RegExp(`(?<=(?<!selector:\\\\s*)'|<|<\\\\/)${selectorName}`, 'g');\r\n if (fileData.match(selectorUsageRegex) === null) {\r\n return;\r\n }\r\n\r\n fileData = Common.replaceInString(fileData, selectorUsageRegex, newSelectorName);\r\n\r\n fse.writeFileSync(filePath, fileData);\r\n }\r\n}\r\n"]}