UNPKG

@gravity-ui/data-source

Version:
107 lines 3.93 kB
import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import { QueryClient } from '@tanstack/react-query'; import { composeFullKey, hasTag } from '../core'; export var ClientDataManager = /*#__PURE__*/function () { function ClientDataManager() { var _config$defaultOption, _config$defaultOption2; var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, ClientDataManager); this.queryClient = void 0; this.queryClient = new QueryClient(_objectSpread(_objectSpread({}, config), {}, { defaultOptions: _objectSpread(_objectSpread({}, config.defaultOptions), {}, { queries: _objectSpread({ networkMode: 'always' }, (_config$defaultOption = config.defaultOptions) === null || _config$defaultOption === void 0 ? void 0 : _config$defaultOption.queries), mutations: _objectSpread({ networkMode: 'always' }, (_config$defaultOption2 = config.defaultOptions) === null || _config$defaultOption2 === void 0 ? void 0 : _config$defaultOption2.mutations) }) })); } return _createClass(ClientDataManager, [{ key: "invalidateTag", value: function invalidateTag(tag, invalidateOptions) { return this.invalidateQueries({ predicate: function predicate(_ref) { var queryKey = _ref.queryKey; return hasTag(queryKey, tag); } }, invalidateOptions); } }, { key: "invalidateTags", value: function invalidateTags(tags, invalidateOptions) { return this.invalidateQueries({ predicate: function predicate(_ref2) { var queryKey = _ref2.queryKey; return tags.every(function (tag) { return hasTag(queryKey, tag); }); } }, invalidateOptions); } }, { key: "invalidateSource", value: function invalidateSource(dataSource, invalidateOptions) { return this.invalidateQueries({ // First element is a data source name queryKey: [dataSource.name] }, invalidateOptions); } }, { key: "resetSource", value: function resetSource(dataSource) { return this.queryClient.resetQueries({ // First element is a data source name queryKey: [dataSource.name] }); } }, { key: "invalidateParams", value: function invalidateParams(dataSource, params, invalidateOptions) { return this.invalidateQueries({ queryKey: composeFullKey(dataSource, params), exact: true }, invalidateOptions); } }, { key: "resetParams", value: function resetParams(dataSource, params) { return this.queryClient.resetQueries({ queryKey: composeFullKey(dataSource, params), exact: true }); } }, { key: "invalidateSourceTags", value: function invalidateSourceTags(dataSource, params, invalidateOptions) { return this.invalidateQueries({ // Last element is a full key queryKey: composeFullKey(dataSource, params).slice(0, -1) }, invalidateOptions); } }, { key: "invalidateQueries", value: function invalidateQueries(filters, invalidateOptions) { var _this = this; var invalidate = function invalidate() { return _this.queryClient.invalidateQueries(filters); }; this.repeatInvalidate(invalidate, invalidateOptions === null || invalidateOptions === void 0 ? void 0 : invalidateOptions.repeat); return invalidate(); } }, { key: "repeatInvalidate", value: function repeatInvalidate(invalidate, repeat) { if (!repeat) { return; } for (var i = 1; i <= repeat.count; i++) { setTimeout(invalidate, repeat.interval * i); } } }]); }(); // #sourceMappingURL=ClientDataManager.js.map