masto
Version:
Mastodon API client for JavaScript, TypeScript, Node.js, browsers
26 lines (25 loc) • 807 B
JavaScript
import { isRecord } from "../../utils/index.js";
const _transformKeys = (data, transform) => {
if (Array.isArray(data)) {
return data.map((value) => _transformKeys(value, transform));
}
if (isRecord(data)) {
return Object.fromEntries(Object.entries(data).map(([key, value]) => [
transform(key),
_transformKeys(value, transform),
]));
}
return data;
};
export const transformKeys = (data, transform) => {
const f = (key) => {
// `PATCH /v1/preferences` uses `:` as a delimiter
if (key.includes(":"))
return key;
// `PATCH /v2/filters` uses _destroy as a special key
if (key.startsWith("_"))
return key;
return transform(key);
};
return _transformKeys(data, f);
};