UNPKG

@gravity-ui/data-source

Version:
72 lines (71 loc) 3.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.composeOptions = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _reactQuery = require("@tanstack/react-query"); var _core = require("../../../core"); var _utils = require("../utils"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var EMPTY_OBJECT = {}; var composeOptions = exports.composeOptions = function composeOptions(context, dataSource, params, options) { var transformParams = dataSource.transformParams, transformError = dataSource.transformError, transformResponse = dataSource.transformResponse, next = dataSource.next, prev = dataSource.prev; var queryFn = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(fetchContext) { var request, paginatedRequest, response; return _regenerator.default.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: request = transformParams ? transformParams(params) : params; paginatedRequest = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, request), fetchContext.pageParam); _context.prev = 2; _context.next = 5; return dataSource.fetch(context, fetchContext, paginatedRequest); case 5: response = _context.sent; return _context.abrupt("return", (0, _utils.formatNullableValue)(response)); case 9: _context.prev = 9; _context.t0 = _context["catch"](2); if (transformError) { _context.next = 13; break; } throw _context.t0; case 13: return _context.abrupt("return", (0, _utils.formatNullableValue)(transformError(_context.t0))); case 14: case "end": return _context.stop(); } }, _callee, null, [[2, 9]]); })); return function queryFn(_x) { return _ref.apply(this, arguments); }; }(); var selectPage = function selectPage(response) { var actualResponse = (0, _utils.parseNullableValue)(response); return transformResponse ? transformResponse(actualResponse) : actualResponse; }; return (0, _objectSpread2.default)((0, _objectSpread2.default)({ queryKey: (0, _core.composeFullKey)(dataSource, params), queryFn: params === _core.idle ? _reactQuery.skipToken : queryFn, select: function select(data) { return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, { pages: data.pages.map(selectPage) }); }, initialPageParam: EMPTY_OBJECT, getNextPageParam: next, getPreviousPageParam: prev }, dataSource.options), options); }; // #sourceMappingURL=utils.js.map