@refinedev/core
Version:
refine is a React-based framework for building internal tools, rapidly. It ships with Ant Design System, an enterprise-level UI toolkit.
38 lines (33 loc) • 830 B
text/typescript
import type { IResourceItem } from "../../../contexts/resource/types";
/**
* Remove all properties that are non-serializable from a resource object.
*/
export const sanitizeResource = (
resource?: Partial<IResourceItem> &
Required<Pick<IResourceItem, "name">> & { children?: unknown },
):
| (Partial<IResourceItem> & Required<Pick<IResourceItem, "name">>)
| undefined => {
if (!resource) {
return undefined;
}
const {
icon,
list,
edit,
create,
show,
clone,
children,
meta,
options,
...restResource
} = resource;
const { icon: _metaIcon, ...restMeta } = meta ?? {};
const { icon: _optionsIcon, ...restOptions } = options ?? {};
return {
...restResource,
...(meta ? { meta: restMeta } : {}),
...(options ? { options: restOptions } : {}),
};
};