UNPKG

@airbnb/lunar-apollo

Version:

Apollo and GraphQL utilities.

44 lines (31 loc) 1.57 kB
"use strict"; exports.__esModule = true; exports.default = removeFromList; var _get = _interopRequireDefault(require("lodash/get")); var _set = _interopRequireDefault(require("lodash/set")); var _prepareQuery = _interopRequireDefault(require("../utils/prepareQuery")); var _getQueryName = _interopRequireDefault(require("../utils/getQueryName")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function removeFromList(docOrQuery, listPath, id, idName) { if (idName === void 0) { idName = 'id'; } const query = (0, _prepareQuery.default)(docOrQuery); return cache => { const queryResult = cache.readQuery(query); const nextResult = _extends({}, queryResult); const list = (0, _get.default)(queryResult, listPath); if (typeof list === 'undefined' || !Array.isArray(list)) { if ("production" !== process.env.NODE_ENV) { throw new TypeError("\"" + (0, _getQueryName.default)(query.query) + "\" list \"" + listPath + "\" is not an array."); } else { return; } } (0, _set.default)(nextResult, listPath, list.filter(item => item[idName] !== id)); cache.writeQuery(_extends({}, query, { data: nextResult })); }; }