UNPKG

@gravity-ui/data-source

Version:
59 lines 2.56 kB
import _regeneratorRuntime from "@babel/runtime/helpers/regeneratorRuntime"; import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import { skipToken } from '@tanstack/react-query'; import { composeFullKey, idle } from '../../../core'; import { formatNullableValue } from '../../utils/formatNullableValue'; import { parseNullableValue } from '../../utils/parseNullableValue'; var EMPTY_OBJECT = {}; export var composeOptions = function composeOptions(context, dataSource, params, options) { var transformParams = dataSource.transformParams, 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.next = 4; return dataSource.fetch(context, fetchContext, paginatedRequest); case 4: response = _context.sent; return _context.abrupt("return", formatNullableValue(response)); case 6: case "end": return _context.stop(); } }, _callee); })); return function queryFn(_x) { return _ref.apply(this, arguments); }; }(); var selectPage = function selectPage(response) { var actualResponse = parseNullableValue(response); return transformResponse ? transformResponse(actualResponse) : actualResponse; }; var meta = { invalidate: options === null || options === void 0 ? void 0 : options.invalidate, optimistic: options === null || options === void 0 ? void 0 : options.optimistic }; 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, meta: meta }, dataSource.options), options); }; // #sourceMappingURL=utils.js.map