{"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"]}