UNPKG

@gravity-ui/data-source

Version:
114 lines (113 loc) 4.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClientDataManager = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _reactQuery = require("@tanstack/react-query"); var _core = require("../core"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () { function ClientDataManager() { var _config$defaultOption, _config$defaultOption2; var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _classCallCheck2.default)(this, ClientDataManager); this.queryClient = void 0; this.queryClient = new _reactQuery.QueryClient((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, { defaultOptions: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, config.defaultOptions), {}, { queries: (0, _objectSpread2.default)({ networkMode: 'always' }, (_config$defaultOption = config.defaultOptions) === null || _config$defaultOption === void 0 ? void 0 : _config$defaultOption.queries), mutations: (0, _objectSpread2.default)({ networkMode: 'always' }, (_config$defaultOption2 = config.defaultOptions) === null || _config$defaultOption2 === void 0 ? void 0 : _config$defaultOption2.mutations) }) })); } return (0, _createClass2.default)(ClientDataManager, [{ key: "invalidateTag", value: function invalidateTag(tag, invalidateOptions) { return this.invalidateQueries({ predicate: function predicate(_ref) { var queryKey = _ref.queryKey; return (0, _core.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 (0, _core.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: (0, _core.composeFullKey)(dataSource, params), exact: true }, invalidateOptions); } }, { key: "resetParams", value: function resetParams(dataSource, params) { return this.queryClient.resetQueries({ queryKey: (0, _core.composeFullKey)(dataSource, params), exact: true }); } }, { key: "invalidateSourceTags", value: function invalidateSourceTags(dataSource, params, invalidateOptions) { return this.invalidateQueries({ // Last element is a full key queryKey: (0, _core.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