UNPKG

@gravity-ui/data-source

Version:
65 lines 2.71 kB
import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _regeneratorRuntime from "@babel/runtime/regenerator"; import { skipToken } from '@tanstack/react-query'; import { composeFullKey, idle } from '../../../core'; import { formatNullableValue, parseNullableValue } from '../utils'; var EMPTY_OBJECT = {}; export var 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 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(fetchContext) { var request, paginatedRequest, response; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: request = transformParams ? transformParams(params) : params; paginatedRequest = _objectSpread(_objectSpread({}, request), fetchContext.pageParam); _context.prev = 2; _context.next = 5; return dataSource.fetch(context, fetchContext, paginatedRequest); case 5: response = _context.sent; return _context.abrupt("return", 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", 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 = parseNullableValue(response); return transformResponse ? transformResponse(actualResponse) : actualResponse; }; return _objectSpread(_objectSpread({ queryKey: composeFullKey(dataSource, params), queryFn: params === idle ? skipToken : queryFn, select: function select(data) { return _objectSpread(_objectSpread({}, data), {}, { pages: data.pages.map(selectPage) }); }, initialPageParam: EMPTY_OBJECT, getNextPageParam: next, getPreviousPageParam: prev }, dataSource.options), options); }; // #sourceMappingURL=utils.js.map