diff options
author | sevenwithawp <sevenwithawp@gmail.com> | 2022-07-09 21:28:02 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-09 14:28:02 -0400 |
commit | 213d831ae3403402d55d3d084b2434c3ba8da70f (patch) | |
tree | d693407f283d97ec2311621a1906bf08ec13226a /ext/fetch/21_formdata.js | |
parent | 132c761e87679aec52b9ed8324ee2a4b00705620 (diff) |
refactor(ext) Decrease of StringPrototypeReplace recurrent usage (#15058)
Co-authored-by: Bartek IwaĆczuk <biwanczuk@gmail.com>
Diffstat (limited to 'ext/fetch/21_formdata.js')
-rw-r--r-- | ext/fetch/21_formdata.js | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/ext/fetch/21_formdata.js b/ext/fetch/21_formdata.js index a134fe5f7..72f83a860 100644 --- a/ext/fetch/21_formdata.js +++ b/ext/fetch/21_formdata.js @@ -271,20 +271,19 @@ webidl.configurePrototype(FormData); const FormDataPrototype = FormData.prototype; - const escape = (str, isFilename) => - StringPrototypeReplace( - StringPrototypeReplace( - StringPrototypeReplace( - isFilename ? str : StringPrototypeReplace(str, /\r?\n|\r/g, "\r\n"), - /\n/g, - "%0A", - ), - /\r/g, - "%0D", - ), - /"/g, - "%22", + const escape = (str, isFilename) => { + const escapeMap = { + "\n": "%0A", + "\r": "%0D", + '"': "%22", + }; + + return StringPrototypeReplace( + isFilename ? str : StringPrototypeReplace(str, /\r?\n|\r/g, "\r\n"), + /([\n\r"])/g, + (c) => escapeMap[c], ); + }; /** * convert FormData to a Blob synchronous without reading all of the files |