mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-03 05:26:07 +00:00
fix(common): toSnakeCase & toCamelCase (#144)
* fix toSnakeCase & toCamelCase * xd
This commit is contained in:
parent
6b2a193ba5
commit
3f1d37ba68
@ -61,18 +61,22 @@ export function toSnakeCase<Obj extends Record<string, any>>(target: Obj): Objec
|
|||||||
case 'function':
|
case 'function':
|
||||||
case 'symbol':
|
case 'symbol':
|
||||||
case 'undefined':
|
case 'undefined':
|
||||||
result[ReplaceRegex.camel(key)] = value;
|
result[ReplaceRegex.snake(key)] = value;
|
||||||
break;
|
break;
|
||||||
case 'object':
|
case 'object':
|
||||||
if (Array.isArray(value)) {
|
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;
|
break;
|
||||||
}
|
}
|
||||||
if (!Number.isNaN(value)) {
|
if (!Number.isNaN(value)) {
|
||||||
result[ReplaceRegex.camel(key)] = null;
|
result[ReplaceRegex.snake(key)] = null;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
result[ReplaceRegex.camel(key)] = toSnakeCase({ ...value });
|
result[ReplaceRegex.snake(key)] = toSnakeCase({ ...value });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -94,18 +98,22 @@ export function toCamelCase<Obj extends Record<string, any>>(target: Obj): Objec
|
|||||||
case 'function':
|
case 'function':
|
||||||
case 'symbol':
|
case 'symbol':
|
||||||
case 'undefined':
|
case 'undefined':
|
||||||
result[ReplaceRegex.snake(key)] = value;
|
result[ReplaceRegex.camel(key)] = value;
|
||||||
break;
|
break;
|
||||||
case 'object':
|
case 'object':
|
||||||
if (Array.isArray(value)) {
|
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;
|
break;
|
||||||
}
|
}
|
||||||
if (!Number.isNaN(value)) {
|
if (!Number.isNaN(value)) {
|
||||||
result[ReplaceRegex.snake(key)] = null;
|
result[ReplaceRegex.camel(key)] = null;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
result[ReplaceRegex.snake(key)] = toCamelCase({ ...value });
|
result[ReplaceRegex.camel(key)] = toCamelCase({ ...value });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -113,10 +121,10 @@ export function toCamelCase<Obj extends Record<string, any>>(target: Obj): Objec
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const ReplaceRegex = {
|
export const ReplaceRegex = {
|
||||||
snake: (s: string) => {
|
camel: (s: string) => {
|
||||||
return s.replace(/(_\S)/gi, (a) => a[1].toUpperCase());
|
return s.replace(/(_\S)/gi, (a) => a[1].toUpperCase());
|
||||||
},
|
},
|
||||||
camel: (s: string) => {
|
snake: (s: string) => {
|
||||||
return s.replace(/[A-Z]/g, (a) => `_${a.toLowerCase()}`);
|
return s.replace(/[A-Z]/g, (a) => `_${a.toLowerCase()}`);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -42,7 +42,7 @@ export function objectToParams(obj: object): URLSearchParams {
|
|||||||
const query = new URLSearchParams();
|
const query = new URLSearchParams();
|
||||||
for (const [key, value] of Object.entries(obj)) {
|
for (const [key, value] of Object.entries(obj)) {
|
||||||
if (!value) continue;
|
if (!value) continue;
|
||||||
query.append(ReplaceRegex.camel(key), String(value));
|
query.append(ReplaceRegex.snake(key), String(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
return query;
|
return query;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user