fix(common): toSnakeCase & toCamelCase (#144)

* fix toSnakeCase & toCamelCase

* xd
This commit is contained in:
MARCROCK22 2023-07-10 13:13:34 -04:00 committed by GitHub
parent 6b2a193ba5
commit 3f1d37ba68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 11 deletions

View File

@ -61,18 +61,22 @@ export function toSnakeCase<Obj extends Record<string, any>>(target: Obj): Objec
case 'function':
case 'symbol':
case 'undefined':
result[ReplaceRegex.camel(key)] = value;
result[ReplaceRegex.snake(key)] = value;
break;
case 'object':
if (Array.isArray(value)) {
result[ReplaceRegex.camel(key)] = value.map((prop) => toSnakeCase(prop));
result[ReplaceRegex.snake(key)] = value.map((prop) => typeof prop === 'object' && prop ? toSnakeCase(prop) : prop);
break;
}
if (isObject(value)) {
result[ReplaceRegex.snake(key)] = toSnakeCase({ ...value })
break;
}
if (!Number.isNaN(value)) {
result[ReplaceRegex.camel(key)] = null;
result[ReplaceRegex.snake(key)] = null;
break;
}
result[ReplaceRegex.camel(key)] = toSnakeCase({ ...value });
result[ReplaceRegex.snake(key)] = toSnakeCase({ ...value });
break;
}
}
@ -94,18 +98,22 @@ export function toCamelCase<Obj extends Record<string, any>>(target: Obj): Objec
case 'function':
case 'symbol':
case 'undefined':
result[ReplaceRegex.snake(key)] = value;
result[ReplaceRegex.camel(key)] = value;
break;
case 'object':
if (Array.isArray(value)) {
result[ReplaceRegex.snake(key)] = value.map((prop) => toCamelCase(prop));
result[ReplaceRegex.camel(key)] = value.map((prop) => typeof prop === 'object' && prop ? toCamelCase(prop) : prop);
break;
}
if (isObject(value)) {
result[ReplaceRegex.camel(key)] = toCamelCase({ ...value })
break;
}
if (!Number.isNaN(value)) {
result[ReplaceRegex.snake(key)] = null;
result[ReplaceRegex.camel(key)] = null;
break;
}
result[ReplaceRegex.snake(key)] = toCamelCase({ ...value });
result[ReplaceRegex.camel(key)] = toCamelCase({ ...value });
break;
}
}
@ -113,10 +121,10 @@ export function toCamelCase<Obj extends Record<string, any>>(target: Obj): Objec
}
export const ReplaceRegex = {
snake: (s: string) => {
camel: (s: string) => {
return s.replace(/(_\S)/gi, (a) => a[1].toUpperCase());
},
camel: (s: string) => {
snake: (s: string) => {
return s.replace(/[A-Z]/g, (a) => `_${a.toLowerCase()}`);
}
};

View File

@ -42,7 +42,7 @@ export function objectToParams(obj: object): URLSearchParams {
const query = new URLSearchParams();
for (const [key, value] of Object.entries(obj)) {
if (!value) continue;
query.append(ReplaceRegex.camel(key), String(value));
query.append(ReplaceRegex.snake(key), String(value));
}
return query;