{"version":3,"sources":["../../../packages/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,2CAA2C,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE;;GAEG;AACH,qBAAa,kBAAmB,YAAW,OAAO;IAC9C;;;;;OAKG;IACI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAUpE;;;;OAIG;IACH,OAAO,CAAC,UAAU;CAgDrB","file":"form-control-updater.d.ts","sourcesContent":["import { ResolveState } from '../../../common';\r\nimport { Updater } from '../../../upgrade/models/updater-interface';\r\nimport { ErrorResult } from '../../../upgrade/models/error-result';\r\nimport { Logger } from '../../utils/logger';\r\n\r\n/**\r\n * Updater for FormControl errors.\r\n */\r\nexport class FormControlUpdater implements Updater {\r\n    /**\r\n     * The update function.\r\n     * @param fileData the file data.\r\n     * @param error the error object.\r\n     * @returns the updated file data.\r\n     */\r\n    public update(fileData: string, error: ErrorResult): Promise<string> {\r\n        if (!fileData) {\r\n            Logger.error(`Cannot find file data`);\r\n        }\r\n        const result = this.regexFixer(fileData);\r\n\r\n        error.resolved = ResolveState.Resolved;\r\n        return new Promise(resolve => resolve(result));\r\n    }\r\n\r\n    /**\r\n     * Fixe file data by regex matching.\r\n     * @param inputString the input file data string.\r\n     * @returns the updated file data string.\r\n     */\r\n    private regexFixer(inputString): string {\r\n        /**\r\n         * clusterName: new FormControl({ value: this.model.platformSettings.kvaName }),\r\n         * to\r\n         * clusterName: new FormControl(this.model.platformSettings.kvaName),\r\n         *\r\n         * controlPlaneReplicaCount: new FormControl(\r\n         *    { value: this.model.workloadClusterConfiguration.controlPlaneReplicaCount })\r\n         * to\r\n         * controlPlaneReplicaCount: new FormControl(this.model.workloadClusterConfiguration.controlPlaneReplicaCount)\r\n         *\r\n         *\r\n         * useUsernameAndPassword: new FormControl({\r\n         *     value: this.useUsernameAndPassword || !!(\r\n         *         this.model.proxySettings.password || this.model.proxySettings.username)\r\n         * }),\r\n         * to\r\n         * useUsernameAndPassword: new FormControl(this.useUsernameAndPassword || !!(\r\n         *    this.model.proxySettings.password || this.model.proxySettings.username)\r\n         * ),\r\n         */\r\n        const valueOnlyRegex2 = /new[\\s\\n]*FormControl\\([\\s\\n]*\\{[\\s\\n]*value:[\\s\\n]*([^,\\}]+)[\\s\\n]*\\}[\\s\\n]*\\)/g;\r\n        const valueOnlyTarget = 'new FormControl($1)'\r\n\r\n        const valueOnlyRegex = /new[\\s\\n]*FormControl\\([\\s\\n]*\\{[\\s\\n]*value:[\\s\\n]*([^,\\}\\s]+)[\\s\\n]*\\}[\\s\\n]*\\)/g;\r\n\r\n        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;\r\n        const requiredTarget = 'new FormControl($1, Validators.required)';\r\n\r\n        const valueOnlyRegexValid = valueOnlyRegex.test(inputString);\r\n        const requiredRegexValid = requiredRegex.test(inputString);\r\n        if (valueOnlyRegexValid) {\r\n            inputString = inputString.replace(valueOnlyRegex, valueOnlyTarget);\r\n            inputString = inputString.replace(valueOnlyRegex2, valueOnlyTarget);\r\n        }\r\n        if (requiredRegexValid) {\r\n            inputString = inputString.replace(requiredRegex, requiredTarget);\r\n\r\n            if (!inputString.includes('import { Validators } from \\'@angular/forms\\';')) {\r\n                inputString = 'import { Validators } from \\'@angular/forms\\';\\n' + inputString;\r\n            }\r\n        }\r\n        if (!valueOnlyRegexValid && !requiredRegexValid) {\r\n            Logger.log('no-op')\r\n        }\r\n\r\n        return inputString;\r\n    }\r\n}\r\n"]}