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:
parent
b4efbda315
commit
250c6174f5
@ -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
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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user