@proofkit/fmdapi
Version:
FileMaker Data API client
30 lines (27 loc) • 819 B
text/typescript
import type { S, L, U } from "ts-toolbelt";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
type TransformedFields<T extends Record<string, any>> = U.Merge<
{
[Field in keyof T]: {
[Key in Field extends string
? L.Last<S.Split<Field, "::">>
: Field]: T[Field];
};
}[keyof T]
>;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function removeFMTableNames<T extends Record<string, any>>(
obj: T,
): TransformedFields<T> {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const newObj: any = {};
for (const key in obj) {
if (key.includes("::")) {
const newKey = key.split("::")[1];
newObj[newKey as keyof TransformedFields<T>] = obj[key];
} else {
newObj[key] = obj[key];
}
}
return newObj;
}