{"version":3,"sources":["../src/string/replaceAll.ts"],"names":["replaceAll","str","search","replacer","i","index","replaceValue","oldLen","m","matchLen"],"mappings":";;;;AAUQ,SAASA,CAAWC,CAAAA,CAAAA,CAAWC,CAAuBC,CAAAA,CAAAA,CAA0E,CACpI,GAAG,OAAOD,CAAY,EAAA,QAAA,CAAS,CAC3B,IAAIE,CAAE,CAAA,CAAA,CAAEC,EACR,KAAOA,CAAAA,CAAAA,CAAMJ,CAAI,CAAA,OAAA,CAAQC,CAAOE,CAAAA,CAAC,CAAK,EAAA,EAAA,EAAG,CACrC,IAAME,CAAAA,CAAe,OAAOH,CAAAA,EAAW,WAAaA,CAASD,CAAAA,CAAM,CAAIC,CAAAA,CAAAA,CACnEI,EAASN,CAAI,CAAA,MAAA,CACjBA,CAAMA,CAAAA,CAAAA,CAAI,SAAU,CAAA,CAAA,CAAEI,CAAK,CAAA,CAAIC,EAAeL,CAAI,CAAA,SAAA,CAAUI,CAAMH,CAAAA,CAAAA,CAAO,MAAM,CAC/EE,CAAAA,CAAAA,CAAIC,CAAQC,CAAAA,CAAAA,CAAa,OAASL,CAAI,CAAA,MAAA,CAASM,EACnD,CACJ,CAAK,KAAA,CACD,IAAIC,CAAAA,CACJ,GAAG,CAACN,CAAAA,CAAO,MAAU,EAAA,CAACA,EAAO,SACzB,CAAA,MAAM,IAAI,KAAA,CAAM,mDAAmD,CAEvE,CAAA,KAAA,CAAQM,CAAIN,CAAAA,CAAAA,CAAO,IAAKD,CAAAA,CAAG,CAAO,IAAA,IAAA,EAAM,CAEhCO,CAAE,CAAA,KAAA,GAAUN,CAAO,CAAA,SAAA,EACnBA,CAAO,CAAA,SAAA,EAAA,CAEX,IAAIK,CAAAA,CAASN,EAAI,MACbQ,CAAAA,CAAAA,CAAWD,CAAE,CAAA,CAAC,CAAE,CAAA,MAAA,CACdF,CAAe,CAAA,OAAOH,GAAW,UAAaA,CAAAA,CAAAA,CAASK,CAAE,CAAA,CAAC,EAAE,GAAGA,CAAC,CAAIL,CAAAA,CAAAA,CAC1EF,EAAMA,CAAI,CAAA,SAAA,CAAU,CAAEO,CAAAA,CAAAA,CAAE,KAAK,CAAA,CAAIF,CAAeL,CAAAA,CAAAA,CAAI,UAAUO,CAAE,CAAA,KAAA,CAAMC,CAAQ,CAAA,CAC9EP,EAAO,SAAaD,EAAAA,CAAAA,CAAI,MAASM,CAAAA,EACrC,CACJ,CACA,OAAON,CACX,CAEI,MAAO,CAAA,SAAA,CAAU,UACjB,GAAA,MAAA,CAAO,UAAU,UAAa,CAAA,SAAsBC,CAAuBC,CAAAA,CAAAA,CAA0E,CACjJ,OAAOH,CAAAA,CAAW,IAAKE,CAAAA,CAAAA,CAAOC,CAAQ,CAC1C,CAAA,CAAA","file":"chunk-D2RTZJSN.mjs","sourcesContent":["/**\r\n * 简单版本的字符串替换函数replaceAll\r\n * \r\n * 在低版本时提供replaceAll \r\n * \r\n * @param str \r\n * @param search \r\n * @param replace \r\n * @returns \r\n */\r\n export function replaceAll(str:string,search:string | RegExp,replacer:string |  ((substring: string, ...args: any[]) => string)):string{    \r\n    if(typeof(search) === \"string\"){\r\n        let i=0,index:number\r\n        while((index=str.indexOf(search,i)) > -1){\r\n            const replaceValue = typeof(replacer)=='function' ? replacer(search) : replacer\r\n            let oldLen = str.length\r\n            str = str.substring(0,index) + replaceValue + str.substring(index+search.length)\r\n            i = index + replaceValue.length + str.length - oldLen \r\n        }        \r\n    }else{\r\n        let m:RegExpExecArray | null\r\n        if(!search.global || !search.multiline){\r\n            throw new Error(\"The search parameter must be enabled '/gm' option\")\r\n        }\r\n        while ((m = search.exec(str)) !== null) {\r\n            // 这对于避免零宽度匹配的无限循环是必要的\r\n            if (m.index === search.lastIndex) {\r\n                search.lastIndex++;\r\n            }     \r\n            let oldLen = str.length\r\n            let matchLen = m[0].length\r\n            const replaceValue = typeof(replacer)=='function' ? replacer(m[0],...m) : replacer\r\n            str = str.substring(0,m.index) + replaceValue + str.substring(m.index+matchLen)\r\n            search.lastIndex += str.length - oldLen \r\n        }\r\n    }\r\n    return str\r\n}\r\n\r\nif(!String.prototype.replaceAll){\r\n    String.prototype.replaceAll = function (this:string,search:string | RegExp,replacer:string |  ((substring: string, ...args: any[]) => string)):string{    \r\n        return replaceAll(this,search,replacer)\r\n    }\r\n}\r\n\r\n\r\ndeclare global {    \r\n    interface String {\r\n        /**\r\n         * Replace all instances of a substring in a string, using a regular expression or search string.\r\n         * @param searchValue A string to search for.\r\n         * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.\r\n         */\r\n        replaceAll(searchValue: string | RegExp, replaceValue: string): string;\r\n\r\n        /**\r\n         * Replace all instances of a substring in a string, using a regular expression or search string.\r\n         * @param searchValue A string to search for.\r\n         * @param replacer A function that returns the replacement text.\r\n         */\r\n        replaceAll(searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string;\r\n    }\r\n}\r\n\r\n\r\n// console.log(replaceAll(\"a{a}{b}{c}{d}\",/\\{\\w\\}/g,(str,...args:any[])=>{    \r\n//     return str+\"///////////\"\r\n// }))"]}