UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

59 lines (53 loc) 1.58 kB
import { CREATE, DELETE, DELETE_MANY, GET_LIST, GET_MANY, GET_MANY_REFERENCE, GET_ONE, UPDATE, UPDATE_MANY, } from './dataFetchActions'; import { LegacyDataProvider, DataProvider } from '../types'; import { defaultDataProvider } from './defaultDataProvider'; const fetchMap = { create: CREATE, delete: DELETE, deleteMany: DELETE_MANY, getList: GET_LIST, getMany: GET_MANY, getManyReference: GET_MANY_REFERENCE, getOne: GET_ONE, update: UPDATE, updateMany: UPDATE_MANY, }; /** * Turn a function-based dataProvider to an object-based one * * Allows using legacy dataProviders transparently. * * @param {Function} legacyDataProvider A legacy dataProvider (type, resource, params) => Promise<any> * * @returns {Object} A dataProvider that react-admin can use */ const convertLegacyDataProvider = ( legacyDataProvider: LegacyDataProvider ): DataProvider => { const proxy = new Proxy(defaultDataProvider, { get(_, name) { return (resource, params) => { if (Object.keys(fetchMap).includes(name.toString())) { const fetchType = fetchMap[name.toString()]; return legacyDataProvider(fetchType, resource, params); } return legacyDataProvider(name.toString(), resource, params); }; }, apply(_, __, args) { return legacyDataProvider.apply(legacyDataProvider, args); }, }); return proxy; }; export default convertLegacyDataProvider;