UNPKG

ra-data-graphql-simple

Version:

A GraphQL simple data provider for react-admin

101 lines 5.13 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getResponseParser = exports.buildVariables = exports.buildGqlQuery = exports.buildQueryFactory = exports.buildQuery = void 0; const merge_js_1 = __importDefault(require("lodash/merge.js")); const ra_data_graphql_1 = __importStar(require("ra-data-graphql")); const ra_core_1 = require("ra-core"); const pluralize_1 = __importDefault(require("pluralize")); const buildQuery_1 = __importDefault(require("./buildQuery.cjs")); exports.buildQuery = buildQuery_1.default; var buildQuery_2 = require("./buildQuery.cjs"); Object.defineProperty(exports, "buildQueryFactory", { enumerable: true, get: function () { return buildQuery_2.buildQueryFactory; } }); var buildGqlQuery_1 = require("./buildGqlQuery.cjs"); Object.defineProperty(exports, "buildGqlQuery", { enumerable: true, get: function () { return __importDefault(buildGqlQuery_1).default; } }); var buildVariables_1 = require("./buildVariables.cjs"); Object.defineProperty(exports, "buildVariables", { enumerable: true, get: function () { return __importDefault(buildVariables_1).default; } }); var getResponseParser_1 = require("./getResponseParser.cjs"); Object.defineProperty(exports, "getResponseParser", { enumerable: true, get: function () { return __importDefault(getResponseParser_1).default; } }); const defaultOptions = { ...ra_data_graphql_1.defaultOptions, buildQuery: buildQuery_1.default, }; const bulkActionOperationNames = { [ra_core_1.DELETE_MANY]: resource => `delete${(0, pluralize_1.default)(resource.name)}`, [ra_core_1.UPDATE_MANY]: resource => `update${(0, pluralize_1.default)(resource.name)}`, }; exports.default = (options) => { const { bulkActionsEnabled = false, ...dPOptions } = (0, merge_js_1.default)({}, defaultOptions, options); if (bulkActionsEnabled && dPOptions.introspection?.operationNames) dPOptions.introspection.operationNames = (0, merge_js_1.default)(dPOptions.introspection.operationNames, bulkActionOperationNames); const defaultDataProvider = (0, ra_data_graphql_1.default)(dPOptions); return { ...defaultDataProvider, // This provider defaults to sending multiple DELETE requests for DELETE_MANY // and multiple UPDATE requests for UPDATE_MANY unless bulk actions are enabled // This can be optimized using the apollo-link-batch-http link ...(bulkActionsEnabled ? {} : { deleteMany: (resource, params) => { const { ids, ...otherParams } = params; return Promise.all(ids.map(id => defaultDataProvider.delete(resource, { id, previousData: null, ...otherParams, }))).then(results => { const data = results.reduce((acc, { data }) => [...acc, data.id], []); return { data }; }); }, updateMany: (resource, params) => { const { ids, data, ...otherParams } = params; return Promise.all(ids.map(id => defaultDataProvider.update(resource, { id, data: data, previousData: null, ...otherParams, }))).then(results => { const data = results.reduce((acc, { data }) => [...acc, data.id], []); return { data }; }); }, }), }; }; //# sourceMappingURL=index.js.map