2
0
mirror of https://github.com/lowdefy/lowdefy.git synced 2025-04-24 16:00:53 +08:00

fix(helpers): Do not add quotes around strings in query params.

Removes dependency on query-string package.
This commit is contained in:
Ioannis Ktistakis 2023-11-10 16:46:28 +02:00
parent b4efbda315
commit 250c6174f5
4 changed files with 14 additions and 43 deletions

@ -37,8 +37,7 @@
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
},
"dependencies": {
"lodash.merge": "4.6.2",
"query-string": "8.1.0"
"lodash.merge": "4.6.2"
},
"devDependencies": {
"@jest/globals": "28.1.3",

@ -14,20 +14,17 @@
limitations under the License.
*/
// TODO: do we want this query-string dep in helpers?
import queryString from 'query-string';
import serializer from './serializer.js';
import type from './type.js';
const parse = (str) => {
const parsed = queryString.parse(str);
const parsed = new URLSearchParams(str);
const deserialized = {};
Object.keys(parsed).forEach((key) => {
parsed.forEach((value, key) => {
try {
deserialized[key] = serializer.deserializeFromString(parsed[key]);
deserialized[key] = serializer.deserializeFromString(value);
} catch (error) {
deserialized[key] = parsed[key];
deserialized[key] = value;
}
});
return deserialized;
@ -39,9 +36,11 @@ const stringify = (object) => {
}
const toSerialize = {};
Object.keys(object).forEach((key) => {
toSerialize[key] = serializer.serializeToString(object[key]);
toSerialize[key] = type.isString(object[key])
? object[key]
: serializer.serializeToString(object[key]);
});
return queryString.stringify(toSerialize);
return new URLSearchParams(toSerialize).toString();
};
export default { stringify, parse };

@ -26,7 +26,7 @@ test('primitives in object', () => {
a: 1,
b: 'b',
});
expect(string).toEqual('a=1&b=%22b%22');
expect(string).toEqual('a=1&b=b');
expect(urlQuery.parse(string)).toEqual({
a: 1,
b: 'b',
@ -106,23 +106,23 @@ test('array in array', () => {
test('object, primitive and array in object', () => {
const string = urlQuery.stringify({
a: 'a',
arr: [1, 2],
obj: {
b: '1',
},
arr: [1, 2],
});
expect(string).toEqual('a=%22a%22&arr=%5B1%2C2%5D&obj=%7B%22b%22%3A%221%22%7D');
expect(string).toEqual('a=a&arr=%5B1%2C2%5D&obj=%7B%22b%22%3A%221%22%7D');
expect(urlQuery.parse(string)).toEqual({
a: 'a',
arr: [1, 2],
obj: {
b: '1',
},
arr: [1, 2],
});
});
test('urlQuery parse string starts with ?', () => {
const string = '?a=%22a%22&arr=%5B1%2C2%5D&obj=%7B%22b%22%3A%221%22%7D';
const string = '?a=a&arr=%5B1%2C2%5D&obj=%7B%22b%22%3A%221%22%7D';
expect(urlQuery.parse(string)).toEqual({
a: 'a',
obj: {

27
pnpm-lock.yaml generated

@ -2115,9 +2115,6 @@ importers:
lodash.merge:
specifier: 4.6.2
version: 4.6.2
query-string:
specifier: 8.1.0
version: 8.1.0
devDependencies:
'@jest/globals':
specifier: 28.1.3
@ -8203,11 +8200,6 @@ packages:
character-entities: 2.0.2
dev: false
/decode-uri-component@0.4.1:
resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==}
engines: {node: '>=14.16'}
dev: false
/decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
@ -9491,11 +9483,6 @@ packages:
dependencies:
to-regex-range: 5.0.1
/filter-obj@5.1.0:
resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==}
engines: {node: '>=14.16'}
dev: false
/find-cache-dir@3.3.2:
resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
engines: {node: '>=8'}
@ -14118,15 +14105,6 @@ packages:
side-channel: 1.0.4
dev: false
/query-string@8.1.0:
resolution: {integrity: sha512-BFQeWxJOZxZGix7y+SByG3F36dA0AbTy9o6pSmKFcFz7DAj0re9Frkty3saBn3nHo3D0oZJ/+rx3r8H8r8Jbpw==}
engines: {node: '>=14.16'}
dependencies:
decode-uri-component: 0.4.1
filter-obj: 5.1.0
split-on-first: 3.0.0
dev: false
/querystring@0.2.0:
resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
engines: {node: '>=0.4.x'}
@ -15581,11 +15559,6 @@ packages:
resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==}
hasBin: true
/split-on-first@3.0.0:
resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==}
engines: {node: '>=12'}
dev: false
/split2@3.2.2:
resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
dependencies: