UNPKG

ra-core

Version:

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

53 lines 1.85 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.combineDataProviders = void 0; var defaultDataProvider_1 = require("./defaultDataProvider"); /** * Combine multiple data providers into one. * * @param dataProviderMatcher A function that returns a data provider for a given resource. * * @example * const dataProvider = combineDataProviders(resource => { * switch(resource) { * case 'posts': * case 'comments': * return dataProvider1; * case 'users': * return dataProvider2; * default: * throw new Error('Unknown resource'); * } * }); */ var combineDataProviders = function (dataProviderMatcher) { return new Proxy(defaultDataProvider_1.defaultDataProvider, { get: function (target, name) { if (name === 'then') { return null; } return function (resource) { var _a; var params = []; for (var _i = 1; _i < arguments.length; _i++) { params[_i - 1] = arguments[_i]; } if (typeof name === 'symbol') { return; } return (_a = dataProviderMatcher(resource))[name].apply(_a, __spreadArray([resource], params, false)); }; }, }); }; exports.combineDataProviders = combineDataProviders; //# sourceMappingURL=combineDataProviders.js.map