1 | const UTF16toUTF8 = (UTF16String) => decodeURIComponent(UTF16String.split('')
|
2 | .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
|
3 | .join(''));
|
4 | const decodeUrlQuery = ({ urlQuery, parametersToBeDecoded = [] }) => {
|
5 | const decodedUrl = Object.assign({}, urlQuery);
|
6 | for (const param of parametersToBeDecoded) {
|
7 | let value = decodedUrl[param];
|
8 | try {
|
9 | value = UTF16toUTF8(universalDecode(value));
|
10 | }
|
11 | catch (error) {
|
12 |
|
13 | }
|
14 | decodedUrl[param] = value;
|
15 | }
|
16 | return decodedUrl;
|
17 | };
|
18 | function universalDecode(str) {
|
19 | if (__IN_SERVER__) {
|
20 | return Buffer.from(str, 'base64').toString('latin1');
|
21 | }
|
22 | else {
|
23 | return atob(str);
|
24 | }
|
25 | }
|
26 | export default decodeUrlQuery;
|
27 |
|
\ | No newline at end of file |